From c02935488fda32caad1dc17715c9d7943b7fd57a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 13 Oct 2024 01:26:09 +0000 Subject: [PATCH] Rebuild pages at 395a8ad307e2d8949a91afa3c73532aa090e22ed --- .../authorship.json | 2 +- AY2425S1-CS2103-F09-1_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103-F12-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-F13-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- .../commits.json | 2 +- .../authorship.json | 2 +- .../commits.json | 2 +- .../authorship.json | 2 +- .../commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-T11-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-T16-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-W10-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-W14-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-W14-3_tp_master/commits.json | 2 +- archive.zip | Bin 9366398 -> 9444228 bytes reposense-logs/reposense.log.0 | 3266 ++++++++--------- summary.json | 2 +- 25 files changed, 1656 insertions(+), 1656 deletions(-) diff --git a/AY2425S1-CS2103-F09-1_tp_master/authorship.json b/AY2425S1-CS2103-F09-1_tp_master/authorship.json index cdda7f10..412eaa92 100644 --- a/AY2425S1-CS2103-F09-1_tp_master/authorship.json +++ b/AY2425S1-CS2103-F09-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F09-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F09-1/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp/graph/badge.svg?token\u003dLE5D8TDMN5)](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"* Data CoNdUctorS is a desktop application for administrative director of CCAs (Co-Curricular Activities) who has to manage and access database of the members.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"* It allows users to efficiently and easily manage and access large CCA membership database (including creation, edit, and deletion of data entries)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"* For the detailed documentation of this project, see the [Data CoNdUctorS Product Website](https://ay2425s1-cs2103-f09-1.github.io/tp).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"wuzengfu":5,"-":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that all block-roles are ordered correctly. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that Javadoc block roles appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that for block roles, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"-":431}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":"We are a team based in the [National University of Singapore](http://www.nus.edu.sg) coming from varied and diverse backgrounds!","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"You can reach us at the email `nowherenearyou[at]comp.nus.edu.sg`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"### Low Xi Si","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"\u003cimg src\u003d\"images/lowxisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"[[github](https://github.com/lowxisi)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"[[portfolio](team/lowxisi.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"### Chua Tse Hui","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":"Materials Science and Engineering Student.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/cth06-github.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":"[[Google](http://www.google.com.sg)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":"[[github](https://github.com/cth06-Github)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"* Role: Project Helper","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":"### Winston Jin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":"\u003cimg src\u003d\"images/winstonjin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"[[homepage](http://www.comp.nus.edu.sg/)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":"[[github](https://github.com/winstonjin)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"* Roll: out","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"### Wu Zengfu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/wuzengfu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"[[github](https://github.com/wuzengfu)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":"[[portfolio](team/zengfu.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":"### Ernest Yu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/somethingfishyfishy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":"[[github](http://github.com/somethingfishyfishy)] ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":"* Role: Supervisor, Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":"* Responsibilities: Many","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":6,"LowXiSi":4,"wuzengfu":5,"WinstonJin":6,"-":32,"somethingfishyfishy":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"*Last edited by: somethingfishyfishy 10/06/24 12:55 AM*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"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","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"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","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"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","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"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","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"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","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"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","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"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","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"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","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"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","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":221,"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","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"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","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"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","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"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","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"somethingfishyfishy"},"content":"Administrative Directors of CCAs in NUS who wish to manage a database of the CCA members more effectively. ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"WinstonJin"},"content":"The database size is around 50 students. These directors are tech savvy who can type fast.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"WinstonJin"},"content":"**Value proposition**: Enables users to efficiently and easily manage large CCA membership database ","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"somethingfishyfishy"},"content":"(including creation, edition, and deletion of data entries).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"WinstonJin"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ - |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"WinstonJin"},"content":"|----------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | new user | search the contact information by his/her name | find the information of this member quickly. |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | remove a member from the address book | update the address book accordingly if he is no longer in the club |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | use this app to populate the member’s details into the app database | save their details (name, year, tele handle, email address) into the database for future reference |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"WinstonJin"},"content":"| `* *` | user | see a demonstration or tutorial for me to get started | know how to use the app |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"WinstonJin"},"content":"| `*` | user that values efficiency | “manipulate” member’s data entries in batches | can do things efficiently (Manipulate includes: Edit, Delete and Add) |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | generate a list of selected member information easily | observe only the information I need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | archive data from past members / alumni to somewhere else | use them in the future when the need arises, such as passing the details to comapnies who may only wish to invite graduates only |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"WinstonJin"},"content":"| `*` | expert user | train another new user to take over my role and responsibility in the CCA | hand over the attendance tracking process easily |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | indicate whether a member has attended a training/event | keep track of the participation status (how active it is) of each member |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | search for member\u0027s details based on active participation status | have a better sensing on member\u0027s involvement to choose for the next ExCo |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | understand / be guided on the automation capabilities of this tool such as automatically updating particulars (year of study, graduation status, on exchange) when a new semester begins | use the app with ease |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | view the PDPA stance the members have in terms of sending of info the 3rd parties | know whether I am allowed to send member’s personal details to 3rd parties |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"somethingfishyfishy"},"content":"### use cases","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LowXiSi"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LowXiSi"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook adds the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LowXiSi"},"content":"* 1a. Given contact has invalid or duplicate fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"somethingfishyfishy"},"content":"* 1b. Given contact has duplicate \u0027name\u0027 field.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"somethingfishyfishy"},"content":" * 1a1. AddressBook shows an error message and prompts user to re-enter with nickname.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LowXiSi"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"LowXiSi"},"content":"1. User requests to delete person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LowXiSi"},"content":"* 1a. The given person is not in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LowXiSi"},"content":"* 1b. Multiple matching persons in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LowXiSi"},"content":" * 1b1. AddressBook shows list of all matching persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LowXiSi"},"content":" * 1b2. User enters index of person to delete","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LowXiSi"},"content":"**Use case: Search for person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LowXiSi"},"content":"1. User requests to search for person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook shows list of all matching persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LowXiSi"},"content":"* 1a. User did not provide the search input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"somethingfishyfishy"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"somethingfishyfishy"},"content":"**MSS**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"somethingfishyfishy"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"somethingfishyfishy"},"content":"2. AddressBook shows list of all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"somethingfishyfishy"},"content":" ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":392,"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","isFullCredit":false},{"lineNumber":393,"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","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LowXiSi"},"content":"4. Data changes should be automatically saved to avoid loss of data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LowXiSi"},"content":"5. Should validate data entries to ensure consistency and correctness (eg. check that email format is correct etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LowXiSi"},"content":"6. Should be able to accommodate increasing member data over time.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LowXiSi"},"content":"7. Should be able to retrieve and display member data within 2 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LowXiSi"},"content":"8. User Interface should be intuitive even for new users.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"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","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"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","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"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","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"LowXiSi":44,"WinstonJin":16,"-":375,"somethingfishyfishy":25}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/Admin` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" [//]: # (Temporarily removed as there is no optional parameter.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" [//]: # (* Items in square brackets are optional.\u003cbr\u003e e.g `n/NAME [r/ROLE]` can be used as `n/John Doe t/friend` or as `n/John Doe`.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":"* Items with `…`​ after them can be used from one to multiple times.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" e.g. `[r/ROLE]…​` can be used twice as `r/External r/Marketing` etc.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wuzengfu"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/ROLE…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wuzengfu"},"content":"**Tip:** A person can have one to many roles which match one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wuzengfu"},"content":"1. President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wuzengfu"},"content":"2. Vice President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wuzengfu"},"content":"3. Admin","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wuzengfu"},"content":"4. Marketing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wuzengfu"},"content":"5. Events (internal)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wuzengfu"},"content":"6. Events (external)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wuzengfu"},"content":"7. External Relations","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wuzengfu"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wuzengfu"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/President r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wuzengfu"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"wuzengfu"},"content":"* When editing roles, the existing roles of the person will be removed i.e adding of roles is not cumulative.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":"* `edit 2 r/Admin r/President` Edits the roles of the 2nd person to be Admin and President, this removes all existing roles user has.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"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","isFullCredit":false},{"lineNumber":177,"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"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","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wuzengfu"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/Admin t/President`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"wuzengfu"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wuzengfu":21,"-":189}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003edata coNdUctorS\u003c/a\u003e","lastModifiedDate":"2024-09-21","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103-F09-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"-":65}},{"path":"docs/team/lowxisi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"LowXiSi":46}},{"path":"docs/team/somethingfishyfishy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":" layout: default.md","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":" title: \"Ernest\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":"* **Project management**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" * User Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":"* **Community**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":"* **Tools**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":46}},{"path":"docs/team/winstonjin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"WinstonJin":46}},{"path":"docs/team/zengfu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":" layout: default.md","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":" title: \"Zengfu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"* **Project management**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" * User Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":"* **Community**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"* **Tools**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wuzengfu":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" .append(person.getTelegram())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" .append(\"; StudentStatus: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" .append(person.getStudentStatus())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .append(\"; Nickname: \");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"WinstonJin":2,"-":45}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_ROLE + \"ROLE [...]\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" + \"[\" + PREFIX_NICKNAME + \"NICKNAME]\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"98765432 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"undergraduate 3 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"Admin \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"President \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" + PREFIX_NICKNAME + \"altName\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":3,"LowXiSi":5,"wuzengfu":3,"WinstonJin":2,"-":74}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"91234567 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"WinstonJin"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" StudentStatus updatedStudentStatus \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.getStudentStatus().orElse(personToEdit.getStudentStatus());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" Nickname updatedNickname \u003d editPersonDescriptor.getNickname().orElse(personToEdit.getNickname());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" return new Person(updatedName, updatedTelegram, updatedEmail, updatedStudentStatus, updatedRoles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" updatedNickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"WinstonJin"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"WinstonJin"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" setStudentStatus(toCopy.studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"cth06-Github"},"content":" setNickname(toCopy.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wuzengfu"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, email, studentStatus, roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"WinstonJin"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"WinstonJin"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"WinstonJin"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" public void setStudentStatus(StudentStatus studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cStudentStatus\u003e getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"LowXiSi"},"content":" return Optional.ofNullable(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"LowXiSi"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"LowXiSi"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"wuzengfu"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"LowXiSi"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"wuzengfu"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"cth06-Github"},"content":" public void setNickname(Nickname nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"cth06-Github"},"content":" public Optional\u003cNickname\u003e getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"cth06-Github"},"content":" return Optional.ofNullable(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"WinstonJin"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 Objects.equals(studentStatus, otherEditPersonDescriptor.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 Objects.equals(nickname, otherEditPersonDescriptor.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"WinstonJin"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":26,"cth06-Github":11,"wuzengfu":8,"WinstonJin":12,"-":200}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" PREFIX_ROLE, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" if (!arePrefixesPresent(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" argMultimap, PREFIX_NAME, PREFIX_STUDENT_STATUS, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_ROLE)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" Nickname nickname \u003d ParserUtil.parseNickname(argMultimap.getValue(PREFIX_NICKNAME).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" Person person \u003d new Person(name, telegram, email, studentStatus, roleList, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"LowXiSi":10,"wuzengfu":5,"WinstonJin":2,"-":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"th/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final Prefix PREFIX_STUDENT_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" public static final Prefix PREFIX_NICKNAME \u003d new Prefix(\"nn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"cth06-Github":1,"wuzengfu":1,"WinstonJin":1,"-":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS, PREFIX_ROLE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_STATUS).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.setStudentStatus(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"LowXiSi"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LowXiSi"},"content":" return Optional.of(ParserUtil.parseRoles(roles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":15,"wuzengfu":3,"WinstonJin":2,"-":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"WinstonJin"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"WinstonJin"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"WinstonJin"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"WinstonJin"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" public static StudentStatus parseStudentStatus(String studentStatus) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" String trimmedStudentStatus \u003d studentStatus.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(trimmedStudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" throw new ParseException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" return new StudentStatus(trimmedStudentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(role);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wuzengfu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"wuzengfu"},"content":" return roleSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"cth06-Github"},"content":" * Parses a {@code String nickname} into a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"cth06-Github"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"cth06-Github"},"content":" * @throws ParseException if the given {@code Nickname} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"cth06-Github"},"content":" public static Nickname parseNickname(String nickname) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"cth06-Github"},"content":" String trimmedNickname \u003d nickname.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"cth06-Github"},"content":" return new Nickname(trimmedNickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":19,"cth06-Github":12,"wuzengfu":4,"WinstonJin":9,"-":93}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private final StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" private final Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" public Person(Name name, Telegram telegram, Email email, StudentStatus studentStatus,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles, Nickname nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" requireAllNonNull(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" return telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"cth06-Github"},"content":" public Nickname getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" return nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"WinstonJin"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 studentStatus.equals(otherPerson.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 nickname.equals(otherPerson.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"wuzengfu"},"content":" return Objects.hash(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"WinstonJin"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":7,"LowXiSi":10,"wuzengfu":7,"WinstonJin":6,"-":97}},{"path":"src/main/java/seedu/address/model/person/StudentStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":" * Represents a Person\u0027s student status in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentStatus(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatus {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Student statuses must take one of the values below: \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate x, where x: An integer value between 1 and 6 inclusive\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" + \"masters\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" + \"phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"undergraduate 1|undergraduate 2|undergraduate 3|\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate 4|undergraduate 5|undergraduate 6|masters|phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Constructs an {@code StudentStatus}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * @param studentStatus A valid student status.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" checkArgument(isValidStudentStatus(studentStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" value \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static boolean isValidStudentStatus(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" if (!(other instanceof StudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" StudentStatus otherStudentStatus \u003d (StudentStatus) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return value.equals(otherStudentStatus.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":65}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"public class Telegram {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" \"Telegram handles should not contain @, and it should have a length of 3 to 29 characters inclusive\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z0-9_]{3,29}$\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"WinstonJin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"WinstonJin":59}},{"path":"src/main/java/seedu/address/model/tag/Nickname.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cth06-Github"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"cth06-Github"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"cth06-Github"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":" * Represents a Nickname in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" * Guarantees: immutable}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"cth06-Github"},"content":"public class Nickname {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Nicknames should not be empty\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"cth06-Github"},"content":" * Constructs a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"cth06-Github"},"content":" * @param nickname A valid nickname.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"cth06-Github"},"content":" public Nickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":" this.value \u003d nickname.trim(); // in ParserUtil.java also have trim()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"cth06-Github"},"content":" * Returns true if a given nickname is empty.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" return value.isEmpty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"cth06-Github"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"cth06-Github"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"cth06-Github"},"content":" if (!(other instanceof Nickname)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"cth06-Github"},"content":" Nickname otherNickname \u003d (Nickname) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" return value.equals(otherNickname.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"cth06-Github"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"cth06-Github"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"cth06-Github"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"cth06-Github"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"cth06-Github"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"cth06-Github"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"cth06-Github":58}},{"path":"src/main/java/seedu/address/model/tag/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"public class Role {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role must be one of the following: \\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" + \"1. President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" + \"2. Vice President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":" + \"3. Admin\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":" + \"4. Marketing\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":" + \"5. Events (internal)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" + \"6. Events (external)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" + \"7. External Relations\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" public static final String[] AVAILABLE_ROLES \u003d {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" \"President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" \"Vice President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" \"Admin\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" \"Marketing\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" \"Events (internal)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" \"Events (external)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" \"External Relations\"};","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" public final String roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(test);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" return Arrays.asList(AVAILABLE_ROLES).contains(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wuzengfu"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wuzengfu"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"wuzengfu":36,"-":42}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Alex Yeoh\"), new Telegram(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Bernice Yu\"), new Telegram(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Telegram(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"David Li\"), new Telegram(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Telegram(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Telegram(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" .map(Role::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"LowXiSi":14,"cth06-Github":1,"wuzengfu":2,"WinstonJin":7,"-":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" private final String telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private final String studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private final String nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"studentStatus\") String studentStatus,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"nickname\") String nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d source.getStudentStatus().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d source.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wuzengfu"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"WinstonJin"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"WinstonJin"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"WinstonJin"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"WinstonJin"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" if (studentStatus \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(studentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" final StudentStatus modelstudentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"cth06-Github"},"content":" final Nickname modelNickname \u003d new Nickname(nickname); // Nickname can be anything","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wuzengfu"},"content":" return new Person(modelName, modelTelegram, modelEmail, modelstudentStatus, modelRoles, modelNickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":5,"wuzengfu":4,"WinstonJin":11,"-":76}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" private final String roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" @JsonCreator","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" @JsonValue","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" public String getRoleName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" return roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * Converts this Jackson-friendly adapted role object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" return new Role(roleName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" private Label telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" private Label studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" private FlowPane roles;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" private FlowPane nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" telegram.setText(person.getTelegram().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" studentStatus.setText(person.getStudentStatus().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.roleName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .forEach(tag -\u003e roles.getChildren().add(new Label(tag.roleName)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"cth06-Github"},"content":" String nicknameObtained \u003d person.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"cth06-Github"},"content":" if (!nicknameObtained.isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"cth06-Github"},"content":" nickname.getChildren().add(new Label(nicknameObtained));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":5,"cth06-Github":7,"wuzengfu":1,"WinstonJin":2,"-":51}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"cth06-Github"},"content":" -fx-background-color: #3e7b91; /*change colour of the tag*/","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"-":351}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" \u003cFlowPane fx:id\u003d\"roles\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" \u003cLabel fx:id\u003d\"studentStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentStatus\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" \u003cFlowPane fx:id\u003d\"nickname\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"cth06-Github":1,"WinstonJin":1,"-":33}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"WinstonJin"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"wuzengfu"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"wuzengfu":1,"WinstonJin":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"11111111\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"22222222\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_PRESIDENT \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_ADMIN \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_AMY \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_BOB \u003d \"masters\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_AMY \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_BOB \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_ADMIN \u003d \" \" + PREFIX_ROLE + VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_PRESIDENT \u003d \" \" + PREFIX_ROLE + VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"@911\"; // \u0027@\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_STUDENT_STATUS_DESC \u003d \" \" + PREFIX_STUDENT_STATUS; // empty string not allowed","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":15,"wuzengfu":3,"WinstonJin":4,"-":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"WinstonJin":2,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getName().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"WinstonJin"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", studentStatus\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getStudentStatus().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", nickname\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" + editPersonDescriptor.getNickname().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"cth06-Github":1,"WinstonJin":2,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN, VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"WinstonJin"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" // multiple student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"WinstonJin"},"content":" validExpectedPersonString + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" // invalid telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, INVALID_STUDENT_STATUS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"LowXiSi"},"content":" // invalid telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_STUDENT_STATUS_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"LowXiSi"},"content":" // zero roles","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"LowXiSi"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"LowXiSi"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" // missing role prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"WinstonJin"},"content":" // invalid telegram","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_EMAIL_DESC + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + INVALID_STUDENT_STATUS_DESC","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_ADMIN, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" + INVALID_STUDENT_STATUS_DESC + ROLE_DESC_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"LowXiSi":68,"wuzengfu":5,"WinstonJin":13,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_STUDENT_STATUS_DESC, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + EMAIL_DESC_AMY, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_EMPTY + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_STUDENT_STATUS_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"WinstonJin"},"content":" + VALID_TELEGRAM_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"WinstonJin"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"WinstonJin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"WinstonJin"},"content":" // telegram","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"WinstonJin"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"WinstonJin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" // student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withStudentStatus(VALID_STUDENT_STATUS_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"WinstonJin"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"WinstonJin"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"wuzengfu"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN + TELEGRAM_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_ADMIN","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"LowXiSi"},"content":" + TELEGRAM_DESC_BOB + STUDENT_STATUS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"wuzengfu"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wuzengfu"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"wuzengfu"},"content":" + INVALID_TELEGRAM_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"wuzengfu"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" public void parse_resetRoles_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d INDEX_THIRD_PERSON.getOneBased() + ROLE_EMPTY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, userInput, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LowXiSi":35,"wuzengfu":11,"WinstonJin":16,"-":145}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \"undergraduate 7\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" private static final String VALID_TELEGRAM \u003d \"123456\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d \"undergraduate 3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_1 \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_2 \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"WinstonJin"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"WinstonJin"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"WinstonJin"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"WinstonJin"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"WinstonJin"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"WinstonJin"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStudentStatus((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStudentStatus(INVALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(VALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"LowXiSi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_STUDENT_STATUS + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(addressWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wuzengfu"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"LowXiSi":33,"wuzengfu":2,"WinstonJin":14,"-":147}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":104}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"WinstonJin"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withTelegram(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"alice@email.com\").withStudentStatus(\"undergraduate 1\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"WinstonJin":1,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(VALID_STUDENT_STATUS_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"WinstonJin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"WinstonJin"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LowXiSi"},"content":" // different student status -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"WinstonJin"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", telegram\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wuzengfu"},"content":" + ALICE.getTelegram() + \", email\u003d\" + ALICE.getEmail() + \", studentStatus\u003d\" + ALICE.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" + \", roles\u003d\" + ALICE.getRoles() + \", nickname\u003d\" + ALICE.getNickname() + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":9,"wuzengfu":1,"WinstonJin":4,"-":86}},{"path":"src/test/java/seedu/address/model/person/StudentStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatusTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidStudentStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidStudentStatus \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentStatus(invalidStudentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" public void isValidStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentStatus.isValidStudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"phd 2\")); // phd with year","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"undergraduate 10\")); // year \u003e 6","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" // valid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"undergraduate 3\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"phd\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"masters\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d new StudentStatus(\"undergraduate 1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(new StudentStatus(\"undergraduate 1\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(new StudentStatus(\"phd\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":56}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertFalse(Telegram.isValidTelegram(\"@93121534\")); // contains @","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" // valid telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" assertTrue(Telegram.isValidTelegram(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" assertTrue(Telegram.isValidTelegram(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" Telegram telegram \u003d new Telegram(\"999\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(telegram.equals(new Telegram(\"999\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(new Telegram(\"995\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":12,"WinstonJin":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":171}},{"path":"src/test/java/seedu/address/model/tag/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"public class RoleTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidRoleName \u003d \"friends\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" // null tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" // invalid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"friends\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" // valid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Vice President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (internal)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (external)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"External Relations\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":40}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.model.util.SampleDataUtil.getRoleSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" private Person[] samplePersons \u003d new Person[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Alex Yeoh\"), new Telegram(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Bernice Yu\"), new Telegram(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Telegram(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"David Li\"), new Telegram(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Telegram(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Telegram(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" public void getRoleSet_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" Role[] roles \u003d {new Role(\"Admin\"), new Role(\"Vice President\")};","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Admin\", \"Vice President\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wuzengfu"},"content":" public void getSamplePersons_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" assertTrue(List.of(samplePersons).containsAll(List.of(SampleDataUtil.getSamplePersons())));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" for (Person samplePerson : samplePersons) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wuzengfu"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wuzengfu"},"content":" assertEquals(sampleAb, SampleDataUtil.getSampleAddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"LowXiSi":25,"wuzengfu":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \" \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLES \u003d \"Freeloader\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d BENSON.getStudentStatus().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" private static final String VALID_NICKNAME \u003d BENSON.getNickname().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"WinstonJin"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wuzengfu"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"WinstonJin"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, INVALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, null, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, INVALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d StudentStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_nullStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, null,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLES));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"LowXiSi"},"content":" invalidRoles, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":34,"cth06-Github":1,"wuzengfu":1,"WinstonJin":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(person.getStudentStatus());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Sets the {@code StudentStatus} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(new StudentStatus(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"wuzengfu":2,"WinstonJin":5,"-":71}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"85355255\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_STUDENT_STATUS \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" public static final String[] DEFAULT_ROLES \u003d {\"Admin\"};","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" public static final String DEFAULT_NICKNAME \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d new StudentStatus(DEFAULT_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(Arrays.stream(DEFAULT_ROLES).map(Role::new).toList());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d new Nickname(DEFAULT_NICKNAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d personToCopy.getStudentStatus();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d personToCopy.getNickname();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withRoles(String ... tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"WinstonJin"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"cth06-Github"},"content":" * Sets the {@code Nickname} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"cth06-Github"},"content":" public PersonBuilder withNickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d new Nickname(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"cth06-Github"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" return new Person(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":13,"wuzengfu":3,"WinstonJin":2,"-":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" sb.append(PREFIX_STUDENT_STATUS + person.getStudentStatus().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" descriptor.getTelegram().ifPresent(phone -\u003e sb.append(PREFIX_TELEGRAM).append(phone.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" descriptor.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .ifPresent(studentStatus -\u003e sb.append(PREFIX_STUDENT_STATUS).append(studentStatus.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":8,"wuzengfu":6,"WinstonJin":2,"-":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" .withTelegram(\"94351253\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Admin\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 2\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" .withEmail(\"johnd@example.com\").withTelegram(\"98765432\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"President\", \"Marketing\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withTelegram(\"95352563\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 3\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"External Relations\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withTelegram(\"87652533\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 4\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withTelegram(\"9482224\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 5\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (internal)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withTelegram(\"9482427\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"masters\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withTelegram(\"9482442\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"phd\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Vice President\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withTelegram(\"8482424\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"stefan@example.com\").withStudentStatus(\"undergraduate 6\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"WinstonJin"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withTelegram(\"8482131\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"hans@example.com\").withStudentStatus(\"undergraduate 1\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"WinstonJin"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"WinstonJin"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"wuzengfu":15,"WinstonJin":11,"-":46}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F09-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F09-1/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp/graph/badge.svg?token\u003dLE5D8TDMN5)](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"* Data CoNdUctorS is a desktop application for administrative director of CCAs (Co-Curricular Activities) who has to manage and access database of the members.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"* It allows users to efficiently and easily manage and access large CCA membership database (including creation, edit, and deletion of data entries)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"* For the detailed documentation of this project, see the [Data CoNdUctorS Product Website](https://ay2425s1-cs2103-f09-1.github.io/tp).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"wuzengfu":5,"-":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that all block-roles are ordered correctly. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that Javadoc block roles appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that for block roles, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"-":431}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":"We are a team based in the [National University of Singapore](http://www.nus.edu.sg) coming from varied and diverse backgrounds!","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"You can reach us at the email `nowherenearyou[at]comp.nus.edu.sg`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"### Low Xi Si","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"\u003cimg src\u003d\"images/lowxisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"[[github](https://github.com/lowxisi)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"[[portfolio](team/lowxisi.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"### Chua Tse Hui","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":"Materials Science and Engineering Student.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/cth06-github.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":"[[Google](http://www.google.com.sg)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":"[[github](https://github.com/cth06-Github)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"* Role: Project Helper","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":"### Winston Jin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":"\u003cimg src\u003d\"images/winstonjin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"[[homepage](http://www.comp.nus.edu.sg/)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":"[[github](https://github.com/winstonjin)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"* Roll: out","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"### Wu Zengfu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/wuzengfu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"[[github](https://github.com/wuzengfu)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":"[[portfolio](team/zengfu.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":"### Ernest Yu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/somethingfishyfishy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":"[[github](http://github.com/somethingfishyfishy)] ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":"* Role: Supervisor, Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":"* Responsibilities: Many","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":6,"LowXiSi":4,"wuzengfu":5,"WinstonJin":6,"-":32,"somethingfishyfishy":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"*Last edited by: somethingfishyfishy 10/06/24 12:55 AM*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"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","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"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","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"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","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"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","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"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","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"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","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"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","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"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","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"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","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":221,"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","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"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","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"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","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"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","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"somethingfishyfishy"},"content":"Administrative Directors of CCAs in NUS who wish to manage a database of the CCA members more effectively. ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"WinstonJin"},"content":"The database size is around 50 students. These directors are tech savvy who can type fast.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"WinstonJin"},"content":"**Value proposition**: Enables users to efficiently and easily manage large CCA membership database ","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"somethingfishyfishy"},"content":"(including creation, edition, and deletion of data entries).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"WinstonJin"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ - |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"WinstonJin"},"content":"|----------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | new user | search the contact information by his/her name | find the information of this member quickly. |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | remove a member from the address book | update the address book accordingly if he is no longer in the club |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | use this app to populate the member’s details into the app database | save their details (name, year, tele handle, email address) into the database for future reference |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"WinstonJin"},"content":"| `* *` | user | see a demonstration or tutorial for me to get started | know how to use the app |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"WinstonJin"},"content":"| `*` | user that values efficiency | “manipulate” member’s data entries in batches | can do things efficiently (Manipulate includes: Edit, Delete and Add) |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | generate a list of selected member information easily | observe only the information I need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | archive data from past members / alumni to somewhere else | use them in the future when the need arises, such as passing the details to comapnies who may only wish to invite graduates only |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"WinstonJin"},"content":"| `*` | expert user | train another new user to take over my role and responsibility in the CCA | hand over the attendance tracking process easily |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | indicate whether a member has attended a training/event | keep track of the participation status (how active it is) of each member |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | search for member\u0027s details based on active participation status | have a better sensing on member\u0027s involvement to choose for the next ExCo |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | understand / be guided on the automation capabilities of this tool such as automatically updating particulars (year of study, graduation status, on exchange) when a new semester begins | use the app with ease |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | view the PDPA stance the members have in terms of sending of info the 3rd parties | know whether I am allowed to send member’s personal details to 3rd parties |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"somethingfishyfishy"},"content":"### use cases","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LowXiSi"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LowXiSi"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook adds the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LowXiSi"},"content":"* 1a. Given contact has invalid or duplicate fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"somethingfishyfishy"},"content":"* 1b. Given contact has duplicate \u0027name\u0027 field.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"somethingfishyfishy"},"content":" * 1a1. AddressBook shows an error message and prompts user to re-enter with nickname.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LowXiSi"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"LowXiSi"},"content":"1. User requests to delete person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LowXiSi"},"content":"* 1a. The given person is not in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LowXiSi"},"content":"* 1b. Multiple matching persons in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LowXiSi"},"content":" * 1b1. AddressBook shows list of all matching persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LowXiSi"},"content":" * 1b2. User enters index of person to delete","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LowXiSi"},"content":"**Use case: Search for person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LowXiSi"},"content":"1. User requests to search for person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook shows list of all matching persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LowXiSi"},"content":"* 1a. User did not provide the search input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"somethingfishyfishy"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"somethingfishyfishy"},"content":"**MSS**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"somethingfishyfishy"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"somethingfishyfishy"},"content":"2. AddressBook shows list of all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"somethingfishyfishy"},"content":" ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":392,"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","isFullCredit":false},{"lineNumber":393,"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","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LowXiSi"},"content":"4. Data changes should be automatically saved to avoid loss of data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LowXiSi"},"content":"5. Should validate data entries to ensure consistency and correctness (eg. check that email format is correct etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LowXiSi"},"content":"6. Should be able to accommodate increasing member data over time.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LowXiSi"},"content":"7. Should be able to retrieve and display member data within 2 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LowXiSi"},"content":"8. User Interface should be intuitive even for new users.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"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","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"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","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"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","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"LowXiSi":44,"WinstonJin":16,"-":375,"somethingfishyfishy":25}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/Admin` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" [//]: # (Temporarily removed as there is no optional parameter.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" [//]: # (* Items in square brackets are optional.\u003cbr\u003e e.g `n/NAME [r/ROLE]` can be used as `n/John Doe t/friend` or as `n/John Doe`.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":"* Items with `…`​ after them can be used from one to multiple times.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" e.g. `[r/ROLE]…​` can be used twice as `r/External r/Marketing` etc.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wuzengfu"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/ROLE…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wuzengfu"},"content":"**Tip:** A person can have one to many roles which match one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wuzengfu"},"content":"1. President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wuzengfu"},"content":"2. Vice President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wuzengfu"},"content":"3. Admin","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wuzengfu"},"content":"4. Marketing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wuzengfu"},"content":"5. Events (internal)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wuzengfu"},"content":"6. Events (external)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wuzengfu"},"content":"7. External Relations","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wuzengfu"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wuzengfu"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/President r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wuzengfu"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"wuzengfu"},"content":"* When editing roles, the existing roles of the person will be removed i.e adding of roles is not cumulative.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":"* `edit 2 r/Admin r/President` Edits the roles of the 2nd person to be Admin and President, this removes all existing roles user has.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"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","isFullCredit":false},{"lineNumber":177,"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"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","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wuzengfu"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/Admin t/President`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"wuzengfu"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wuzengfu":21,"-":189}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003edata coNdUctorS\u003c/a\u003e","lastModifiedDate":"2024-09-21","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103-F09-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"-":65}},{"path":"docs/team/lowxisi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"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-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"LowXiSi":46}},{"path":"docs/team/somethingfishyfishy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":" layout: default.md","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":" title: \"Ernest\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"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-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":"* **Project management**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" * User Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":"* **Community**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":"* **Tools**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":46}},{"path":"docs/team/winstonjin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"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-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"WinstonJin":46}},{"path":"docs/team/zengfu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":" layout: default.md","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":" title: \"Zengfu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"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-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"* **Project management**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" * User Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":"* **Community**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"* **Tools**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wuzengfu":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":" .append(person.getTelegramHandle())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" .append(\"; StudentStatus: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" .append(person.getStudentStatus())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .append(\"; Nickname: \");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"WinstonJin":1,"-":45,"somethingfishyfishy":1}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_ROLE + \"ROLE [...]\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" + \"[\" + PREFIX_NICKNAME + \"NICKNAME]\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"98765432 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"undergraduate 3 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"Admin \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"President \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" + PREFIX_NICKNAME + \"altName\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":3,"LowXiSi":4,"wuzengfu":3,"-":74,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"telegramHandle] \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"91234567 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle updatedTelegramHandle \u003d editPersonDescriptor.getTelegramHandle()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"somethingfishyfishy"},"content":" .orElse(personToEdit.getTelegramHandle());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" StudentStatus updatedStudentStatus \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.getStudentStatus().orElse(personToEdit.getStudentStatus());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wuzengfu"},"content":" Nickname updatedNickname \u003d editPersonDescriptor.getNickname().orElse(personToEdit.getNickname());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(updatedName, updatedTelegramHandle, updatedEmail, updatedStudentStatus, updatedRoles,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" updatedNickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"somethingfishyfishy"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"somethingfishyfishy"},"content":" setTelegramHandle(toCopy.telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" setStudentStatus(toCopy.studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"cth06-Github"},"content":" setNickname(toCopy.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"somethingfishyfishy"},"content":" return CollectionUtil.isAnyNonNull(name, telegramHandle, email, studentStatus, roles);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"somethingfishyfishy"},"content":" public void setTelegramHandle(TelegramHandle telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"somethingfishyfishy"},"content":" public Optional\u003cTelegramHandle\u003e getTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"somethingfishyfishy"},"content":" return Optional.ofNullable(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" public void setStudentStatus(StudentStatus studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cStudentStatus\u003e getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" return Optional.ofNullable(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"LowXiSi"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"wuzengfu"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"LowXiSi"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"wuzengfu"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"cth06-Github"},"content":" public void setNickname(Nickname nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"cth06-Github"},"content":" public Optional\u003cNickname\u003e getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"cth06-Github"},"content":" return Optional.ofNullable(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"somethingfishyfishy"},"content":" \u0026\u0026 Objects.equals(telegramHandle, otherEditPersonDescriptor.telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 Objects.equals(studentStatus, otherEditPersonDescriptor.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 Objects.equals(nickname, otherEditPersonDescriptor.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"somethingfishyfishy"},"content":" .add(\"telegramHandle\", telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":24,"cth06-Github":11,"wuzengfu":7,"-":200,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" PREFIX_ROLE, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" if (!arePrefixesPresent(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap, PREFIX_NAME, PREFIX_STUDENT_STATUS, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_ROLE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_STUDENT_STATUS, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle telegramHandle \u003d ParserUtil.parseTelegramHandle(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" Nickname nickname \u003d ParserUtil.parseNickname(argMultimap.getValue(PREFIX_NICKNAME).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" Person person \u003d new Person(name, telegramHandle, email, studentStatus, roleList, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"LowXiSi":7,"wuzengfu":3,"-":48,"somethingfishyfishy":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Prefix PREFIX_TELEGRAM_HANDLE \u003d new Prefix(\"th/\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final Prefix PREFIX_STUDENT_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" public static final Prefix PREFIX_NICKNAME \u003d new Prefix(\"nn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"cth06-Github":1,"wuzengfu":1,"-":11,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS, PREFIX_ROLE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" editPersonDescriptor.setTelegramHandle(ParserUtil","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" .parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_STATUS).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.setStudentStatus(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LowXiSi"},"content":" return Optional.of(ParserUtil.parseRoles(roles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"wuzengfu":2,"-":65,"somethingfishyfishy":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" * Parses a {@code String telegramHandle} into a {@code TelegramHandle}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" * @throws ParseException if the given {@code telegramHandle} is invalid.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" public static TelegramHandle parseTelegramHandle(String telegramHandle) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":" requireNonNull(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" String trimmedTelegramHandle \u003d telegramHandle.trim();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"somethingfishyfishy"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegramHandle)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" return new TelegramHandle(trimmedTelegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" public static StudentStatus parseStudentStatus(String studentStatus) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" String trimmedStudentStatus \u003d studentStatus.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(trimmedStudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" throw new ParseException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" return new StudentStatus(trimmedStudentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(role);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wuzengfu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"wuzengfu"},"content":" return roleSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"cth06-Github"},"content":" * Parses a {@code String nickname} into a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"cth06-Github"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"cth06-Github"},"content":" * @throws ParseException if the given {@code Nickname} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"cth06-Github"},"content":" public static Nickname parseNickname(String nickname) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"cth06-Github"},"content":" String trimmedNickname \u003d nickname.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"cth06-Github"},"content":" return new Nickname(trimmedNickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":19,"cth06-Github":12,"wuzengfu":4,"-":93,"somethingfishyfishy":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" private final TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private final StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" private final Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" public Person(Name name, TelegramHandle telegramHandle, Email email, StudentStatus studentStatus,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles, Nickname nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":" requireAllNonNull(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"somethingfishyfishy"},"content":" public TelegramHandle getTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" return telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"cth06-Github"},"content":" public Nickname getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" return nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"somethingfishyfishy"},"content":" \u0026\u0026 telegramHandle.equals(otherPerson.telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 studentStatus.equals(otherPerson.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 nickname.equals(otherPerson.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"somethingfishyfishy"},"content":" return Objects.hash(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"somethingfishyfishy"},"content":" .add(\"telegram handle\", telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":7,"LowXiSi":9,"wuzengfu":5,"-":97,"somethingfishyfishy":9}},{"path":"src/main/java/seedu/address/model/person/StudentStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":" * Represents a Person\u0027s student status in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentStatus(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatus {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Student statuses must take one of the values below: \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate x, where x: An integer value between 1 and 6 inclusive\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" + \"masters\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" + \"phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALIDATION_REGEX \u003d \"^((undergraduate \\\\b[1-6]\\\\b)|masters|phd)$\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" * Constructs an {@code StudentStatus}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" * @param studentStatus A valid student status.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" checkArgument(isValidStudentStatus(studentStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" value \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static boolean isValidStudentStatus(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" if (!(other instanceof StudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" StudentStatus otherStudentStatus \u003d (StudentStatus) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" return value.equals(otherStudentStatus.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":63,"somethingfishyfishy":1}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"public class TelegramHandle {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" \"Telegram handles should not contain @, and it should have a length of 3 to 29 characters inclusive\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z0-9_]{3,29}$\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":" public TelegramHandle(String telegram) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" checkArgument(isValidTelegramHandle(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" if (other instanceof TelegramHandle otherTelegram) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"WinstonJin"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" return false;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"WinstonJin":48,"somethingfishyfishy":7}},{"path":"src/main/java/seedu/address/model/tag/Nickname.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cth06-Github"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"cth06-Github"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"cth06-Github"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":" * Represents a Nickname in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" * Guarantees: immutable}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"cth06-Github"},"content":"public class Nickname {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Nicknames should not be empty\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"cth06-Github"},"content":" * Constructs a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"cth06-Github"},"content":" * @param nickname A valid nickname.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"cth06-Github"},"content":" public Nickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":" this.value \u003d nickname.trim(); // in ParserUtil.java also have trim()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"cth06-Github"},"content":" * Returns true if a given nickname is empty.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" return value.isEmpty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"cth06-Github"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"cth06-Github"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"cth06-Github"},"content":" if (!(other instanceof Nickname)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"cth06-Github"},"content":" Nickname otherNickname \u003d (Nickname) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" return value.equals(otherNickname.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"cth06-Github"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"cth06-Github"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"cth06-Github"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"cth06-Github"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"cth06-Github"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"cth06-Github"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"cth06-Github":58}},{"path":"src/main/java/seedu/address/model/tag/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"public class Role {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role must be one of the following: \\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" + \"1. President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" + \"2. Vice President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":" + \"3. Admin\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":" + \"4. Marketing\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":" + \"5. Events (internal)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" + \"6. Events (external)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" + \"7. External Relations\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" public static final String[] AVAILABLE_ROLES \u003d {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" \"President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" \"Vice President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" \"Admin\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" \"Marketing\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" \"Events (internal)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" \"Events (external)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" \"External Relations\"};","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" public final String roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(test);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" return Arrays.asList(AVAILABLE_ROLES).contains(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wuzengfu"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wuzengfu"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"wuzengfu":36,"-":42}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Alex Yeoh\"), new TelegramHandle(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Bernice Yu\"), new TelegramHandle(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new TelegramHandle(\"93210283\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"David Li\"), new TelegramHandle(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new TelegramHandle(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new TelegramHandle(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .map(Role::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"cth06-Github":1,"wuzengfu":2,"-":37,"somethingfishyfishy":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" private final String telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private final String studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private final String nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"telegramHandle\") String telegramHandle,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"studentStatus\") String studentStatus,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"nickname\") String nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d source.getTelegramHandle().value;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d source.getStudentStatus().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d source.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wuzengfu"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" if (telegramHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle.class.getSimpleName()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"somethingfishyfishy"},"content":" if (!TelegramHandle.isValidTelegramHandle(telegramHandle)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"somethingfishyfishy"},"content":" throw new IllegalValueException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"somethingfishyfishy"},"content":" final TelegramHandle modelTelegramHandle \u003d new TelegramHandle(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" if (studentStatus \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(studentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" final StudentStatus modelstudentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"cth06-Github"},"content":" final Nickname modelNickname \u003d new Nickname(nickname); // Nickname can be anything","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(modelName, modelTelegramHandle, modelEmail, modelstudentStatus, modelRoles, modelNickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":5,"wuzengfu":3,"WinstonJin":1,"-":76,"somethingfishyfishy":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" private final String roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" @JsonCreator","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" @JsonValue","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" public String getRoleName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" return roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * Converts this Jackson-friendly adapted role object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" return new Role(roleName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" private Label telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" private Label studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" private FlowPane roles;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" private FlowPane nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle.setText(person.getTelegramHandle().value);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" studentStatus.setText(person.getStudentStatus().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.roleName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .forEach(tag -\u003e roles.getChildren().add(new Label(tag.roleName)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"cth06-Github"},"content":" String nicknameObtained \u003d person.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"cth06-Github"},"content":" if (!nicknameObtained.isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"cth06-Github"},"content":" nickname.getChildren().add(new Label(nicknameObtained));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":5,"cth06-Github":7,"wuzengfu":1,"-":51,"somethingfishyfishy":2}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"cth06-Github"},"content":" -fx-background-color: #3e7b91; /*change colour of the tag*/","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"-":351}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" \u003cFlowPane fx:id\u003d\"roles\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" \u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" \u003cLabel fx:id\u003d\"studentStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentStatus\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" \u003cFlowPane fx:id\u003d\"nickname\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"cth06-Github":1,"-":33,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"somethingfishyfishy"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_HANDLE_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"wuzengfu"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":1,"-":170,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALID_TELEGRAM_HANDLE_AMY \u003d \"11111111\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALID_TELEGRAM_HANDLE_BOB \u003d \"22222222\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_PRESIDENT \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_ADMIN \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_AMY \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_BOB \u003d \"masters\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String TELEGRAM_HANDLE_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String TELEGRAM_HANDLE_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_AMY \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_BOB \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_ADMIN \u003d \" \" + PREFIX_ROLE + VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_PRESIDENT \u003d \" \" + PREFIX_ROLE + VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String INVALID_TELEGRAM_HANDLE_DESC \u003d \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"@911\"; // \u0027@\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_STUDENT_STATUS_DESC \u003d \" \" + PREFIX_STUDENT_STATUS; // empty string not allowed","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"wuzengfu":1,"-":106,"somethingfishyfishy":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"-":179,"somethingfishyfishy":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" // different telegramHandle -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" + editPersonDescriptor.getName().orElse(null) + \", telegramHandle\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" + editPersonDescriptor.getTelegramHandle().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", studentStatus\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getStudentStatus().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", nickname\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" + editPersonDescriptor.getNickname().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":7,"cth06-Github":1,"-":59,"somethingfishyfishy":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"somethingfishyfishy"},"content":" + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN, VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"somethingfishyfishy"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"somethingfishyfishy"},"content":" // multiple telegramHandles","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, TELEGRAM_HANDLE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" // multiple student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"somethingfishyfishy"},"content":" validExpectedPersonString + TELEGRAM_HANDLE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_HANDLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, INVALID_STUDENT_STATUS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_HANDLE_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_STUDENT_STATUS_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"LowXiSi"},"content":" // zero roles","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_HANDLE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"somethingfishyfishy"},"content":" // missing telegramHandle prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_HANDLE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" // missing role prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_HANDLE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"somethingfishyfishy"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_EMAIL_DESC + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + INVALID_STUDENT_STATUS_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"LowXiSi"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_ADMIN, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"LowXiSi"},"content":" + INVALID_STUDENT_STATUS_DESC + ROLE_DESC_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48,"wuzengfu":1,"-":124,"somethingfishyfishy":45}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_TELEGRAM_HANDLE_DESC, TelegramHandle.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_STUDENT_STATUS_DESC, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_AMY, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_EMPTY + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_STUDENT_STATUS_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"somethingfishyfishy"},"content":" + VALID_TELEGRAM_HANDLE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"somethingfishyfishy"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"somethingfishyfishy"},"content":" // telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"LowXiSi"},"content":" // student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withStudentStatus(VALID_STUDENT_STATUS_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"LowXiSi"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_HANDLE_DESC + TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"somethingfishyfishy"},"content":" + ROLE_DESC_ADMIN + TELEGRAM_HANDLE_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"somethingfishyfishy"},"content":" + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_ADMIN","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"somethingfishyfishy"},"content":" + TELEGRAM_HANDLE_DESC_BOB + STUDENT_STATUS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_TELEGRAM_HANDLE_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"LowXiSi"},"content":" public void parse_resetRoles_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d INDEX_THIRD_PERSON.getOneBased() + ROLE_EMPTY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, userInput, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LowXiSi":29,"wuzengfu":5,"-":145,"somethingfishyfishy":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":" // private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \"+651234\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \"undergraduate 7\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d \"undergraduate 3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_1 \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_2 \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" // omitted as we are accepting any character as name, hence this INVALID_NAME no longer is invalid","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" /*","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegramHandle((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegramHandle(INVALID_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_validValueWithoutWhitespace_returnsTelegramHandle() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM_HANDLE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(VALID_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_validValueWithWhitespace_returnsTrimmedTelegramHandle() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"somethingfishyfishy"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM_HANDLE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"somethingfishyfishy"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(telegramWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStudentStatus((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStudentStatus(INVALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(VALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"LowXiSi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_STUDENT_STATUS + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(addressWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"LowXiSi"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wuzengfu"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"LowXiSi":33,"wuzengfu":2,"-":146,"somethingfishyfishy":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":104}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withTelegramHandle(\"12345\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"alice@email.com\").withStudentStatus(\"undergraduate 1\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"-":83,"somethingfishyfishy":1}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(VALID_STUDENT_STATUS_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"WinstonJin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"somethingfishyfishy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LowXiSi"},"content":" // different student status -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", telegram handle\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" + ALICE.getTelegramHandle() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" + \", studentStatus\u003d\" + ALICE.getStudentStatus()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LowXiSi"},"content":" + \", roles\u003d\" + ALICE.getRoles() + \", nickname\u003d\" + ALICE.getNickname() + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":8,"WinstonJin":1,"-":86,"somethingfishyfishy":7}},{"path":"src/test/java/seedu/address/model/person/StudentStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatusTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidStudentStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidStudentStatus \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentStatus(invalidStudentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" public void isValidStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentStatus.isValidStudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"phd 2\")); // phd with year","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"undergraduate 10\")); // year \u003e 6","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" // valid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"undergraduate 3\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"phd\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"masters\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d new StudentStatus(\"undergraduate 1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(new StudentStatus(\"undergraduate 1\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(new StudentStatus(\"phd\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":56}},{"path":"src/test/java/seedu/address/model/person/TelegramHandleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"public class TelegramHandleTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e new TelegramHandle(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":" public void constructor_invalidTelegramHandle_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":" String invalidTelegramHandle \u003d \"\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TelegramHandle(invalidTelegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" public void isValidTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":" // null telegram Handle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e TelegramHandle.isValidTelegramHandle(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegram Handles","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"\")); // empty string","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\" \")); // spaces only","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"@93121534\")); // contains @","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" // valid telegrams","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"93121534\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" public void equals() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle telegramHandle \u003d new TelegramHandle(\"999\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(telegramHandle.equals(new TelegramHandle(\"999\")));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(telegramHandle.equals(telegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(5.0f));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(new TelegramHandle(\"995\")));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":171}},{"path":"src/test/java/seedu/address/model/tag/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"public class RoleTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidRoleName \u003d \"friends\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" // null tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" // invalid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"friends\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" // valid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Vice President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (internal)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (external)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"External Relations\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":40}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.model.util.SampleDataUtil.getRoleSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" private Person[] samplePersons \u003d new Person[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Alex Yeoh\"), new TelegramHandle(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Bernice Yu\"), new TelegramHandle(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new TelegramHandle(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"David Li\"), new TelegramHandle(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new TelegramHandle(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new TelegramHandle(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" public void getRoleSet_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" Role[] roles \u003d {new Role(\"Admin\"), new Role(\"Vice President\")};","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Admin\", \"Vice President\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wuzengfu"},"content":" public void getSamplePersons_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" assertTrue(List.of(samplePersons).containsAll(List.of(SampleDataUtil.getSamplePersons())));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" for (Person samplePerson : samplePersons) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wuzengfu"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wuzengfu"},"content":" assertEquals(sampleAb, SampleDataUtil.getSampleAddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"LowXiSi":18,"wuzengfu":40,"somethingfishyfishy":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \"+651234\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \" \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLES \u003d \"Freeloader\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d BENSON.getTelegramHandle().toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d BENSON.getStudentStatus().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" private static final String VALID_NICKNAME \u003d BENSON.getNickname().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" public void toModelType_invalidTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" String expectedMessage \u003d TelegramHandle.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"somethingfishyfishy"},"content":" public void toModelType_nullTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wuzengfu"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"somethingfishyfishy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TelegramHandle.class.getSimpleName());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, INVALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, null, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, INVALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d StudentStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_nullStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLES));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"LowXiSi"},"content":" invalidRoles, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":22,"cth06-Github":1,"wuzengfu":1,"-":81,"somethingfishyfishy":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.setTelegramHandle(person.getTelegramHandle());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(person.getStudentStatus());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" * Sets the {@code TelegramHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" public EditPersonDescriptorBuilder withTelegramHandle(String telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.setTelegramHandle(new TelegramHandle(telegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Sets the {@code StudentStatus} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(new StudentStatus(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"wuzengfu":2,"-":71,"somethingfishyfishy":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"85355255\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_STUDENT_STATUS \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" public static final String[] DEFAULT_ROLES \u003d {\"Admin\"};","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" public static final String DEFAULT_NICKNAME \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d new TelegramHandle(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d new StudentStatus(DEFAULT_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(Arrays.stream(DEFAULT_ROLES).map(Role::new).toList());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d new Nickname(DEFAULT_NICKNAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d personToCopy.getTelegramHandle();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d personToCopy.getStudentStatus();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d personToCopy.getNickname();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withRoles(String ... tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"somethingfishyfishy"},"content":" * Sets the {@code TelegramHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" public PersonBuilder withTelegramHandle(String telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d new TelegramHandle(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"cth06-Github"},"content":" * Sets the {@code Nickname} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"cth06-Github"},"content":" public PersonBuilder withNickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d new Nickname(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"cth06-Github"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"LowXiSi":14,"cth06-Github":13,"wuzengfu":3,"-":73,"somethingfishyfishy":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" sb.append(PREFIX_TELEGRAM_HANDLE + person.getTelegramHandle().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" sb.append(PREFIX_STUDENT_STATUS + person.getStudentStatus().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.getTelegramHandle().ifPresent(phone -\u003e sb.append(PREFIX_TELEGRAM_HANDLE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" .append(phone.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" descriptor.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" .ifPresent(studentStatus -\u003e sb.append(PREFIX_STUDENT_STATUS).append(studentStatus.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":7,"wuzengfu":6,"-":47,"somethingfishyfishy":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(\"94351253\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Admin\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 2\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(\"johnd@example.com\").withTelegramHandle(\"98765432\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"President\", \"Marketing\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withTelegramHandle(\"95352563\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 3\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"External Relations\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withTelegramHandle(\"87652533\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 4\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withTelegramHandle(\"9482224\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 5\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (internal)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withTelegramHandle(\"9482427\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"masters\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withTelegramHandle(\"9482442\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"phd\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Vice President\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withTelegramHandle(\"8482424\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"stefan@example.com\").withStudentStatus(\"undergraduate 6\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withTelegramHandle(\"8482131\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"hans@example.com\").withStudentStatus(\"undergraduate 1\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":18,"wuzengfu":15,"-":46,"somethingfishyfishy":15}}] diff --git a/AY2425S1-CS2103-F09-1_tp_master/commits.json b/AY2425S1-CS2103-F09-1_tp_master/commits.json index 025c558c..98e20bfd 100644 --- a/AY2425S1-CS2103-F09-1_tp_master/commits.json +++ b/AY2425S1-CS2103-F09-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LowXiSi":[{"date":"2024-09-30","commitResults":[{"hash":"667e5abd86a204945b25aa73ce70ae07a3850cef","isMergeCommit":false,"messageTitle":"Update AboutXiSi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"1aafc3a1ea3cf0d25e0edb64760794811bebc192","isMergeCommit":false,"messageTitle":"Update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"9c6486fd2c9a2802e882426c7e8cd58cdf4acad6","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":9}}}]},{"date":"2024-10-05","commitResults":[{"hash":"99e1652b10ed71b44f0c511a2159f0ea389bc230","isMergeCommit":true,"messageTitle":"Merge pull request #37 from WinstonJin/developer-guide","messageBody":"3 Update Developer Guide: Target User Profiles, Value Proposition, User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"0a61065e3c330dbef396f4e129819d7f1cc428f9","isMergeCommit":false,"messageTitle":"Add support for student status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":133},"test-code":{"insertions":207,"deletions":199}}},{"hash":"b1b27903ff435107fa23a5c8d22b6708ebf326c9","isMergeCommit":true,"messageTitle":"Merge pull request #53 from WinstonJin/Telegram-Handle","messageBody":"Telegram Handle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f3898f4a65123ad7149dd99b0c10dc571085fe40","isMergeCommit":false,"messageTitle":"Resolve issues from previous merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":135},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":252,"deletions":238}}}]}],"cth06-Github":[{"date":"2024-09-21","commitResults":[{"hash":"97725e51362b07e5e4a13b4e3ac82363f54e05c0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103-F09-1/switch-docs-to-markbind","messageBody":"Merge Switch docs to markbind branch to master branch","fileTypesAndContributionMap":{}},{"hash":"f373b489ad88faf9a3b9294b31e953e8ae9cc08a","isMergeCommit":false,"messageTitle":"Update default.md with product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1d5dbdcb738b7bff325d997071feb38d01b67e29","isMergeCommit":false,"messageTitle":"Update README.md with codecov status","messageBody":"Testing if there is codecov status appearing","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"554165507f854a82ae966b794937bff3ec689d9b","isMergeCommit":false,"messageTitle":"Remove codecov status in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"e21fbc818f8b910b33476692bfac04629706b073","isMergeCommit":false,"messageTitle":"Add codecov status in README.md","messageBody":"Trying another way apart from what was stated in the SE website.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"3903791f0db9546264dc78db6a1fa10936bd3461","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":47}}},{"hash":"6c35f4889e14452e53c5cee0361d61244c41704e","isMergeCommit":false,"messageTitle":"Update AboutUs.md TH","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"c8d43335e0c8f3e5cf193991dcec85866d75c21b","isMergeCommit":false,"messageTitle":"Update AboutUs.md new line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6412a0739054505a305c9b179c9d08e07979b5f7","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"fae593ec9a22f8a87bf59a198c17644777c2b2fe","isMergeCommit":false,"messageTitle":"Add nickname function (partial)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":22},"test-code":{"insertions":14,"deletions":9}}},{"hash":"75de3cf793b453d0b595bbabb149c570f11eb37f","isMergeCommit":false,"messageTitle":"Allow nickname optional","messageBody":"Add command currently makes the -nn tag compulsory, if not mistaken. For\nempty nicknames, the GUI shows them as an empty line below the email. To\nallow nicknames to be optional when writing the add command, and for the\nnickname component to only be shown if the nickname is not an empty\nString, let\u0027s\n\n* Change the nickname component in fxml file as a FlowPane rather than a\n Label\n* Change the code in AddCommandParser.java where\n arMultimap.getValue(PREFIX_NICKNAME).orElse(\"\") rather than .get() so\n that an empty Optional object returned will be seen as a empty String\n return to alow for parsing in parseNickname function\n\nThis are the main changes to allow nickname to be an optional\nrequirement in Add Command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":28}}},{"hash":"37244bed59ee40ce98b95a21d8afec662b882a4e","isMergeCommit":false,"messageTitle":"Edit code for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"c24c7922e3759346632fff959a689f7cc24f5bae","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"Errors occur due to nickname field being missing in the creation of\nPerosn object. Edit it to include nickname field (psudo-optional for\nnow).\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":3}}},{"hash":"844ec7054ce76528de1751cb474d029ceaf3d707","isMergeCommit":false,"messageTitle":"Update to try pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]}],"wuzengfu":[{"date":"2024-09-30","commitResults":[{"hash":"6fc1084134562e6d951e6ed3251bd88780b384a7","isMergeCommit":false,"messageTitle":"Update Zengfu details for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6a56a7bea9afb12f4c47d8740f8116745caf56ee","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":11}}}]},{"date":"2024-10-07","commitResults":[{"hash":"7aa6624fc52f42cbf31c459f72031644924402bf","isMergeCommit":false,"messageTitle":"Add zengfu.md to team profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3f8e7cebaeaba0f0a175e31fe322ddb2a3a1465c","isMergeCommit":false,"messageTitle":"Modify validations on tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":11}}},{"hash":"f775c701d5bf83330e56e0768c5037a8d20355f3","isMergeCommit":false,"messageTitle":"Make tags a compulsory parameter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"fe5cfdef55a0de1341b72e4d06e2d01c57929ec3","isMergeCommit":false,"messageTitle":"Add and modify test cases for tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":84}}},{"hash":"0ed36faa4b1a10eeedbb6d396c9554b64ff34779","isMergeCommit":false,"messageTitle":"Add test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"4c3bf5cd25952e8cf91f59dd68b195da4120a343","isMergeCommit":false,"messageTitle":"Add more test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7f5ce5eeeb42d6d4d557ddfc5a5829084201f7b8","isMergeCommit":false,"messageTitle":"Rename Tag.java to Role.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":67},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":86,"deletions":86}}},{"hash":"0ee9268f71ee1cd10fa60c5ffa4fac16c4450123","isMergeCommit":false,"messageTitle":"Update UserGuide.md to align with Role parameter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":16}}},{"hash":"dcca8bd35e957d45f27dfd902b9a341358e69a19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-role-attribute-for-person","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52ab4c5d9f6b27514234fb14faaf2e037e00ba80","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wuzengfu/add-role-attribute-for-person","messageBody":"Add role attribute for person","fileTypesAndContributionMap":{}},{"hash":"8d1f3b14fe54cb8d7d3f4a8cfa1b96696b13a96d","isMergeCommit":false,"messageTitle":"Fix compiling errors and styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":9,"deletions":8}}},{"hash":"54de07a8c92c1723e44cf19a79e21285042ea974","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into fork/LowXiSi/branch-add-student-status","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/AddressBookTest.java\n#\tsrc/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/model/person/UniquePersonListTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]}],"WinstonJin":[{"date":"2024-09-30","commitResults":[{"hash":"de3698625d5dbbc4403cb8b0dd5c6e0972d0cb77","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":43}}},{"hash":"0d5fa5e3c068f4aa79b5ebdf7fa0d9ee83ad8247","isMergeCommit":true,"messageTitle":"Merge pull request #23 from wuzengfu/update-aboutus-zengfu","messageBody":"Update Zengfu details for AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8d361229d511dbbd2d1e0c4cd583cd27e9e8c570","isMergeCommit":true,"messageTitle":"Merge pull request #24 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Update AboutErnest","fileTypesAndContributionMap":{}},{"hash":"54c40b231062061a2f2bf584d6a51934a443bdbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4472eb3daf68f236fc22dddc543ca8642e48000a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from WinstonJin/about-us-edit","messageBody":"Update AboutUs Winston","fileTypesAndContributionMap":{}},{"hash":"53bd9f26a36418e1d35c7b32b05f1c7ceeda26e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-docs-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea73c46d118c94196e0ec8d9b5ec8f530ca17361","isMergeCommit":true,"messageTitle":"Merge pull request #26 from cth06-Github/update-docs-branch","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"b447d16f5bc8b3c5f3d4a5cdfefbc4cfe6711805","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AboutXiSi","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0d7e1b35c5699f167ae752adea4083ac1055748c","isMergeCommit":true,"messageTitle":"Merge pull request #27 from LowXiSi/branch-AboutXiSi","messageBody":"Update AboutXiSi","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"b52e1d62e5737fa2e30c378f96f2c97c7426aa91","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wuzengfu/update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"464e8f3f493cadc134e912fb45913582901eadef","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-05","commitResults":[{"hash":"1903d1bf13c0c208f037e773afbfecf7785a1820","isMergeCommit":true,"messageTitle":"Merge pull request #38 from LowXiSi/branch-Non-functional-requirements","messageBody":"Update non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"b0c961eabf0ecf3a6debb59293ada578b967c464","isMergeCommit":true,"messageTitle":"Merge pull request #41 from cth06-Github/site-update-branch","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8e180183ad48bc5d8b740e4d103506016c6f60fe","isMergeCommit":false,"messageTitle":"Change Phone to Telegram Handle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":133},"test-code":{"insertions":190,"deletions":187}}},{"hash":"0f364319f20a7d21658409a6e328660511416b84","isMergeCommit":false,"messageTitle":"Edit PersonListCard.fxml to show GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44a4d908fb7ca33dacea50137af695450f822f0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wuzengfu/add-zengfu-profile","messageBody":"Add zengfu.md to team profile","fileTypesAndContributionMap":{}},{"hash":"f0b63f3c6bbb67223a536c44438fa5392062ac7b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from cth06-Github/nickname-v1.2-branch","messageBody":"Merge Nickname v1.2 branch","fileTypesAndContributionMap":{}},{"hash":"07e3c693a1ba189e04e8b3fc59c78a651b9c3fb8","isMergeCommit":true,"messageTitle":"Merge pull request #55 from wuzengfu/fix-compile-error-and-styling-issues","messageBody":"Fix compiling errors and styling issues","fileTypesAndContributionMap":{}},{"hash":"96aef8941c0bd9b8132daf4bccaf253db1a3cb45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Telegram-Handle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65f95055c3e051e1d38e90be08269bf95b2b8ee8","isMergeCommit":true,"messageTitle":"Merge pull request #52 from LowXiSi/branch-add-student-status","messageBody":"Add support for student status","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"7b6f9c85153ae77d02b59b22245e24e15025c1f8","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LowXiSi/branch-resolve-merge-issues","messageBody":"Resolve issues from previous merge","fileTypesAndContributionMap":{}}]}],"somethingfishyfishy":[{"date":"2024-09-30","commitResults":[{"hash":"11ae12fccf718470ff311f0ce413dc193c7f8906","isMergeCommit":false,"messageTitle":"Update AboutErnest","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c861bbb9ca2e7780b0069ee6dfa22976a3459f42","isMergeCommit":false,"messageTitle":"Correct github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"dc8197abf6c08c62fe4a7b03babbaad0fb85c005","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LowXiSi/branch-Update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b3ff7c83e89bebf41c0d4aa96c6fece0c1b1307d","isMergeCommit":false,"messageTitle":"Added somethingfishyfishy.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"67540a04d904d6f20a6bf3a86ded1bedd805b7b6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Added somethingfishyfishy.md","fileTypesAndContributionMap":{}},{"hash":"67bda16eafbb4a6ed50a91e883fc404a1824db0a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":15}}},{"hash":"ff75230c2e4fec35f60fca5903a0762fe4251dc3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from somethingfishyfishy/branch-UpdateDGUseCases","messageBody":"Update DG - Product scope \u0026 use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f4ca3070771757bf039bd9ed4ad5258608fc81e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Fix Tse Hui\u0027s image description","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"LowXiSi":{"docs":94,"functional-code":247,"test-code":378,"other":3},"cth06-Github":{"docs":9,"functional-code":109,"test-code":15},"wuzengfu":{"docs":77,"functional-code":74,"test-code":130},"WinstonJin":{"docs":68,"functional-code":116,"test-code":129},"somethingfishyfishy":{"docs":78,"functional-code":0,"test-code":0}},"authorContributionVariance":{"LowXiSi":42722.312,"cth06-Github":3583.8096,"wuzengfu":11302.381,"WinstonJin":18301.945,"somethingfishyfishy":336.35742},"authorDisplayNameMap":{"LowXiSi":"CS2103-F09-1 LOW ..I SI","cth06-Github":"CS2103-F09-1 CHUA.. HUI","wuzengfu":"CS2103-F09-1 WU Z..NGFU","WinstonJin":"CS2103-F09-1 JIN ..STON","somethingfishyfishy":"CS2103-F09-1 ERNE..RONG"}} +{"authorDailyContributionsMap":{"LowXiSi":[{"date":"2024-09-30","commitResults":[{"hash":"667e5abd86a204945b25aa73ce70ae07a3850cef","isMergeCommit":false,"messageTitle":"Update AboutXiSi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"1aafc3a1ea3cf0d25e0edb64760794811bebc192","isMergeCommit":false,"messageTitle":"Update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"9c6486fd2c9a2802e882426c7e8cd58cdf4acad6","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":9}}}]},{"date":"2024-10-05","commitResults":[{"hash":"99e1652b10ed71b44f0c511a2159f0ea389bc230","isMergeCommit":true,"messageTitle":"Merge pull request #37 from WinstonJin/developer-guide","messageBody":"3 Update Developer Guide: Target User Profiles, Value Proposition, User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"0a61065e3c330dbef396f4e129819d7f1cc428f9","isMergeCommit":false,"messageTitle":"Add support for student status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":133},"test-code":{"insertions":207,"deletions":199}}},{"hash":"b1b27903ff435107fa23a5c8d22b6708ebf326c9","isMergeCommit":true,"messageTitle":"Merge pull request #53 from WinstonJin/Telegram-Handle","messageBody":"Telegram Handle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f3898f4a65123ad7149dd99b0c10dc571085fe40","isMergeCommit":false,"messageTitle":"Resolve issues from previous merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":135},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":252,"deletions":238}}}]}],"cth06-Github":[{"date":"2024-09-21","commitResults":[{"hash":"97725e51362b07e5e4a13b4e3ac82363f54e05c0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103-F09-1/switch-docs-to-markbind","messageBody":"Merge Switch docs to markbind branch to master branch","fileTypesAndContributionMap":{}},{"hash":"f373b489ad88faf9a3b9294b31e953e8ae9cc08a","isMergeCommit":false,"messageTitle":"Update default.md with product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1d5dbdcb738b7bff325d997071feb38d01b67e29","isMergeCommit":false,"messageTitle":"Update README.md with codecov status","messageBody":"Testing if there is codecov status appearing","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"554165507f854a82ae966b794937bff3ec689d9b","isMergeCommit":false,"messageTitle":"Remove codecov status in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"e21fbc818f8b910b33476692bfac04629706b073","isMergeCommit":false,"messageTitle":"Add codecov status in README.md","messageBody":"Trying another way apart from what was stated in the SE website.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"3903791f0db9546264dc78db6a1fa10936bd3461","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":47}}},{"hash":"6c35f4889e14452e53c5cee0361d61244c41704e","isMergeCommit":false,"messageTitle":"Update AboutUs.md TH","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"c8d43335e0c8f3e5cf193991dcec85866d75c21b","isMergeCommit":false,"messageTitle":"Update AboutUs.md new line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6412a0739054505a305c9b179c9d08e07979b5f7","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"fae593ec9a22f8a87bf59a198c17644777c2b2fe","isMergeCommit":false,"messageTitle":"Add nickname function (partial)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":22},"test-code":{"insertions":14,"deletions":9}}},{"hash":"75de3cf793b453d0b595bbabb149c570f11eb37f","isMergeCommit":false,"messageTitle":"Allow nickname optional","messageBody":"Add command currently makes the -nn tag compulsory, if not mistaken. For\nempty nicknames, the GUI shows them as an empty line below the email. To\nallow nicknames to be optional when writing the add command, and for the\nnickname component to only be shown if the nickname is not an empty\nString, let\u0027s\n\n* Change the nickname component in fxml file as a FlowPane rather than a\n Label\n* Change the code in AddCommandParser.java where\n arMultimap.getValue(PREFIX_NICKNAME).orElse(\"\") rather than .get() so\n that an empty Optional object returned will be seen as a empty String\n return to alow for parsing in parseNickname function\n\nThis are the main changes to allow nickname to be an optional\nrequirement in Add Command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":28}}},{"hash":"37244bed59ee40ce98b95a21d8afec662b882a4e","isMergeCommit":false,"messageTitle":"Edit code for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"c24c7922e3759346632fff959a689f7cc24f5bae","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"Errors occur due to nickname field being missing in the creation of\nPerosn object. Edit it to include nickname field (psudo-optional for\nnow).\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":3}}},{"hash":"844ec7054ce76528de1751cb474d029ceaf3d707","isMergeCommit":false,"messageTitle":"Update to try pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]}],"wuzengfu":[{"date":"2024-09-30","commitResults":[{"hash":"6fc1084134562e6d951e6ed3251bd88780b384a7","isMergeCommit":false,"messageTitle":"Update Zengfu details for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6a56a7bea9afb12f4c47d8740f8116745caf56ee","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":11}}}]},{"date":"2024-10-07","commitResults":[{"hash":"7aa6624fc52f42cbf31c459f72031644924402bf","isMergeCommit":false,"messageTitle":"Add zengfu.md to team profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3f8e7cebaeaba0f0a175e31fe322ddb2a3a1465c","isMergeCommit":false,"messageTitle":"Modify validations on tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":11}}},{"hash":"f775c701d5bf83330e56e0768c5037a8d20355f3","isMergeCommit":false,"messageTitle":"Make tags a compulsory parameter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"fe5cfdef55a0de1341b72e4d06e2d01c57929ec3","isMergeCommit":false,"messageTitle":"Add and modify test cases for tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":84}}},{"hash":"0ed36faa4b1a10eeedbb6d396c9554b64ff34779","isMergeCommit":false,"messageTitle":"Add test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"4c3bf5cd25952e8cf91f59dd68b195da4120a343","isMergeCommit":false,"messageTitle":"Add more test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7f5ce5eeeb42d6d4d557ddfc5a5829084201f7b8","isMergeCommit":false,"messageTitle":"Rename Tag.java to Role.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":67},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":86,"deletions":86}}},{"hash":"0ee9268f71ee1cd10fa60c5ffa4fac16c4450123","isMergeCommit":false,"messageTitle":"Update UserGuide.md to align with Role parameter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":16}}},{"hash":"dcca8bd35e957d45f27dfd902b9a341358e69a19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-role-attribute-for-person","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52ab4c5d9f6b27514234fb14faaf2e037e00ba80","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wuzengfu/add-role-attribute-for-person","messageBody":"Add role attribute for person","fileTypesAndContributionMap":{}},{"hash":"8d1f3b14fe54cb8d7d3f4a8cfa1b96696b13a96d","isMergeCommit":false,"messageTitle":"Fix compiling errors and styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":9,"deletions":8}}},{"hash":"54de07a8c92c1723e44cf19a79e21285042ea974","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into fork/LowXiSi/branch-add-student-status","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/AddressBookTest.java\n#\tsrc/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/model/person/UniquePersonListTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]}],"WinstonJin":[{"date":"2024-09-30","commitResults":[{"hash":"de3698625d5dbbc4403cb8b0dd5c6e0972d0cb77","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":43}}},{"hash":"0d5fa5e3c068f4aa79b5ebdf7fa0d9ee83ad8247","isMergeCommit":true,"messageTitle":"Merge pull request #23 from wuzengfu/update-aboutus-zengfu","messageBody":"Update Zengfu details for AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8d361229d511dbbd2d1e0c4cd583cd27e9e8c570","isMergeCommit":true,"messageTitle":"Merge pull request #24 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Update AboutErnest","fileTypesAndContributionMap":{}},{"hash":"54c40b231062061a2f2bf584d6a51934a443bdbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4472eb3daf68f236fc22dddc543ca8642e48000a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from WinstonJin/about-us-edit","messageBody":"Update AboutUs Winston","fileTypesAndContributionMap":{}},{"hash":"53bd9f26a36418e1d35c7b32b05f1c7ceeda26e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-docs-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea73c46d118c94196e0ec8d9b5ec8f530ca17361","isMergeCommit":true,"messageTitle":"Merge pull request #26 from cth06-Github/update-docs-branch","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"b447d16f5bc8b3c5f3d4a5cdfefbc4cfe6711805","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AboutXiSi","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0d7e1b35c5699f167ae752adea4083ac1055748c","isMergeCommit":true,"messageTitle":"Merge pull request #27 from LowXiSi/branch-AboutXiSi","messageBody":"Update AboutXiSi","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"b52e1d62e5737fa2e30c378f96f2c97c7426aa91","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wuzengfu/update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"464e8f3f493cadc134e912fb45913582901eadef","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-05","commitResults":[{"hash":"1903d1bf13c0c208f037e773afbfecf7785a1820","isMergeCommit":true,"messageTitle":"Merge pull request #38 from LowXiSi/branch-Non-functional-requirements","messageBody":"Update non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"b0c961eabf0ecf3a6debb59293ada578b967c464","isMergeCommit":true,"messageTitle":"Merge pull request #41 from cth06-Github/site-update-branch","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8e180183ad48bc5d8b740e4d103506016c6f60fe","isMergeCommit":false,"messageTitle":"Change Phone to Telegram Handle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":133},"test-code":{"insertions":190,"deletions":187}}},{"hash":"0f364319f20a7d21658409a6e328660511416b84","isMergeCommit":false,"messageTitle":"Edit PersonListCard.fxml to show GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44a4d908fb7ca33dacea50137af695450f822f0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wuzengfu/add-zengfu-profile","messageBody":"Add zengfu.md to team profile","fileTypesAndContributionMap":{}},{"hash":"f0b63f3c6bbb67223a536c44438fa5392062ac7b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from cth06-Github/nickname-v1.2-branch","messageBody":"Merge Nickname v1.2 branch","fileTypesAndContributionMap":{}},{"hash":"07e3c693a1ba189e04e8b3fc59c78a651b9c3fb8","isMergeCommit":true,"messageTitle":"Merge pull request #55 from wuzengfu/fix-compile-error-and-styling-issues","messageBody":"Fix compiling errors and styling issues","fileTypesAndContributionMap":{}},{"hash":"96aef8941c0bd9b8132daf4bccaf253db1a3cb45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Telegram-Handle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65f95055c3e051e1d38e90be08269bf95b2b8ee8","isMergeCommit":true,"messageTitle":"Merge pull request #52 from LowXiSi/branch-add-student-status","messageBody":"Add support for student status","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"7b6f9c85153ae77d02b59b22245e24e15025c1f8","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LowXiSi/branch-resolve-merge-issues","messageBody":"Resolve issues from previous merge","fileTypesAndContributionMap":{}}]}],"somethingfishyfishy":[{"date":"2024-09-30","commitResults":[{"hash":"11ae12fccf718470ff311f0ce413dc193c7f8906","isMergeCommit":false,"messageTitle":"Update AboutErnest","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c861bbb9ca2e7780b0069ee6dfa22976a3459f42","isMergeCommit":false,"messageTitle":"Correct github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"dc8197abf6c08c62fe4a7b03babbaad0fb85c005","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LowXiSi/branch-Update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b3ff7c83e89bebf41c0d4aa96c6fece0c1b1307d","isMergeCommit":false,"messageTitle":"Added somethingfishyfishy.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"67540a04d904d6f20a6bf3a86ded1bedd805b7b6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Added somethingfishyfishy.md","fileTypesAndContributionMap":{}},{"hash":"67bda16eafbb4a6ed50a91e883fc404a1824db0a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":15}}},{"hash":"ff75230c2e4fec35f60fca5903a0762fe4251dc3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from somethingfishyfishy/branch-UpdateDGUseCases","messageBody":"Update DG - Product scope \u0026 use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f4ca3070771757bf039bd9ed4ad5258608fc81e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Fix Tse Hui\u0027s image description","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-13","commitResults":[{"hash":"5cbcf871e2e523aa379b456dad4d8525a3c59ae2","isMergeCommit":false,"messageTitle":"Rename Telegram to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":70},"other":{"insertions":7,"deletions":11}}},{"hash":"69178475fff2044fc92c02dbad8bce44b086e474","isMergeCommit":false,"messageTitle":"Fix UI bugs after prev TelegramHandle update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":15},"test-code":{"insertions":238,"deletions":214}}},{"hash":"12106da7aed9dfbe1dd1b9fd143564d49febb776","isMergeCommit":true,"messageTitle":"Merge pull request #68 from somethingfishyfishy/master","messageBody":"Rename Telegram to TelegramHandle","fileTypesAndContributionMap":{}},{"hash":"e7430ef045aaa6af8b5719925ada9dd46a561142","isMergeCommit":false,"messageTitle":"Fix Regex of StudentStatus and various Junit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13},"test-code":{"insertions":5,"deletions":2}}},{"hash":"b2eea978c946c92f935881fe130286e52be99aea","isMergeCommit":true,"messageTitle":"Merge pull request #69 from somethingfishyfishy/branch-Fix-JunitTests","messageBody":"Fix Regex of StudentStatus and various Junit tests","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LowXiSi":{"docs":94,"functional-code":235,"test-code":304,"other":3},"cth06-Github":{"docs":9,"functional-code":109,"test-code":15},"wuzengfu":{"docs":77,"functional-code":67,"test-code":117},"WinstonJin":{"docs":68,"functional-code":50,"test-code":1},"somethingfishyfishy":{"docs":78,"functional-code":86,"test-code":243}},"authorContributionVariance":{"LowXiSi":39547.69,"cth06-Github":3304.9375,"wuzengfu":10463.556,"WinstonJin":16872.064,"somethingfishyfishy":18418.318},"authorDisplayNameMap":{"LowXiSi":"CS2103-F09-1 LOW ..I SI","cth06-Github":"CS2103-F09-1 CHUA.. HUI","wuzengfu":"CS2103-F09-1 WU Z..NGFU","WinstonJin":"CS2103-F09-1 JIN ..STON","somethingfishyfishy":"CS2103-F09-1 ERNE..RONG"}} diff --git a/AY2425S1-CS2103-F12-2_tp_master/authorship.json b/AY2425S1-CS2103-F12-2_tp_master/authorship.json index e9e27bcd..0d1a059d 100644 --- a/AY2425S1-CS2103-F12-2_tp_master/authorship.json +++ b/AY2425S1-CS2103-F12-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"T_Assistant is an **address book made for CS2103 tutors** to easily track their students\u0027 groupings and taskings, optimised for users who prefer a CLI program.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"## Features","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"1. **Store** student information.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"2. **Store** group information and the tasks they have.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"3. **Track** progress of each group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **using** T_Assistant, head over to the [User Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **developing** T_Assistant, head over to the [Developer Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/DeveloperGuide.html)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":14,"YANYAN-w":1,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"### Lewis Lye","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/ghos7ie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"[[github](http://github.com/ghos7ie)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":"### Wang Hongyanyan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/yanyan-w.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"[[github](http://github.com/YANYAN-w)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"### Tan Soo Yap","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"\u003cimg src\u003d\"images/sooyap.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"[[github](https://github.com/SooYap)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"* Role: Developer and Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"* Responsibilities: Dev Ops + Code Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":"### Desiree Sng","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":"\u003cimg src\u003d\"images/dez2003.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"[[github](http://github.com/dez2003)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":5,"YANYAN-w":6,"-":33,"dez2003":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant Developer Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"original source as well }_","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":"**`Main`** (consisting of classes [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":"`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":"charge of the app launch and shut down.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"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","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":"the command `delete 1`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" `interface` mentioned in the previous point.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"The **API** of this component is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":"`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"`StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":"the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":"are in the `src/main/resources/view` folder. For example, the layout of the [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":"`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":"is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":"call as an example.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":"PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"ghos7ie"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a student).\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":133,"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" `Command` object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"ghos7ie"},"content":"`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"ghos7ie"},"content":"`Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"ghos7ie"},"content":"needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"ghos7ie"},"content":"`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"ghos7ie"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"ghos7ie"},"content":" objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"ghos7ie"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"ghos7ie"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"ghos7ie"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"ghos7ie"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":"following operations:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"ghos7ie"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"ghos7ie"},"content":"`Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"ghos7ie"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"ghos7ie"},"content":"Step 2. The user executes `delete 5` command to delete the 5th student in the address book. The `delete` command calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"ghos7ie"},"content":"saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"ghos7ie"},"content":"Step 3. The user executes `add n/David …​` to add a new student. The `add` command also calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"ghos7ie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"ghos7ie"},"content":"not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"ghos7ie"},"content":"Step 4. The user now decides that adding the student was a mistake, and decides to undo that action by executing the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"ghos7ie"},"content":"`undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"ghos7ie"},"content":"to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"ghos7ie"},"content":"previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"ghos7ie"},"content":"case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"ghos7ie"},"content":"lifeline reaches the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"ghos7ie"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"ghos7ie"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"ghos7ie"},"content":"book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"ghos7ie"},"content":"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-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"ghos7ie"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ghos7ie"},"content":"`list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ghos7ie"},"content":"the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ghos7ie"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ghos7ie"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ghos7ie"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ghos7ie"},"content":"desktop applications follow.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ghos7ie"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the student being deleted).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"ghos7ie"},"content":"* CS2103 tutor","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"ghos7ie"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"ghos7ie"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"ghos7ie"},"content":"* Manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"ghos7ie"},"content":"* Helps to track the following:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"ghos7ie"},"content":" * Students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"ghos7ie"},"content":" * Their groups","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"ghos7ie"},"content":" * Group projects’ progress","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"ghos7ie"},"content":" * TA will create Groups and assign tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"ghos7ie"},"content":" * Mark the tasks as the groups complete them","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"ghos7ie"},"content":"| Priority | As a …. | I want to… | So that I can… |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"ghos7ie"},"content":"|----------|------------------------|-----------------------------------------------|---------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | beginner TA | add students into the system | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | busy TA | remove projects/tasks | not feel overwhelmed |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | TA that prefers typing | carry out all the functions through CLI | just use my keyboard |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"SooYap"},"content":"| `* * *` | disorganized TA | mark a team’s tasks as complete | keep track of my students’ progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | sort students by their groupings | keep track of all the groups under my instruction |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | remove students no longer taking this module | keep the contact list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | search for a student by name or project group | quickly find their contact details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | see what I added (groups/projects) before | quickly reference what I added. |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | highly motivated TA | add students into their projects | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"ghos7ie"},"content":"| `*` | TA that makes mistakes | edit student particulars | correct my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"ghos7ie"},"content":"| `*` | clumsy TA | edit tasks/projects | fix my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"ghos7ie"},"content":"(For all use cases below, the **System** is the `T_Assistant` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"ghos7ie"},"content":"otherwise)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"ghos7ie"},"content":"**Use case: List Students**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Student into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Student to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Group into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Group to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Group already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"ghos7ie"},"content":"* 3d. Student is in another Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"ghos7ie"},"content":" * 3d1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student to a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a Student to a Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the Student to the Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"SooYap"},"content":"**Use case: Mark Team\u0027s task as Complete**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"SooYap"},"content":"1. User marks task as complete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"SooYap"},"content":"2. T_Assistant marks the task accordingly.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"SooYap"},"content":"* 1b. The user marks an already complete task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Student from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"SooYap"},"content":"1. User requests to list all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"SooYap"},"content":"2. T_Assistant shows all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"SooYap"},"content":"3. User deletes a student from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"SooYap"},"content":"4. T_Assistant adds student to the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"SooYap"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"SooYap"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"SooYap"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"SooYap"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"SooYap"},"content":"**Use case: List all Groups**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"SooYap"},"content":"1. User lists all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"SooYap"},"content":"**Use case: List all Tasks**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"SooYap"},"content":"1. User lists all tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"SooYap"},"content":"**Use case: Add Task to Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"SooYap"},"content":"1. User adds a task to a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"SooYap"},"content":"* 1b. A duplicate task is entered.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant informs user that the task already exists.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Task from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"SooYap"},"content":"1. User removes a task from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"SooYap"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"ghos7ie"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"ghos7ie"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"SooYap"},"content":"* **Student Number**: Unique identifier for each student","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"SooYap"},"content":"* **Group Name**: Unique identifier for each group","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"ghos7ie"},"content":" optimum.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"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","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"ghos7ie"},"content":"1. Deleting a student while all students are being shown","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"ghos7ie"},"content":" 1. Prerequisites: List all students using the `list` command. Multiple students in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"ghos7ie"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"ghos7ie"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"ghos7ie"},"content":" Expected: No student is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"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","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":285,"SooYap":129,"-":324,"dez2003":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant User Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":"T_Assistant 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, T_Assistant can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"**Tip:** A student can have any number of tags (including 0)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"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-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":"* When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":"* You can remove all the student’s tags by typing `t/` without","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st student to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd student to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"Finds students whose names contain any of the given keywords.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":"Deletes the specified student from the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":"* The index refers to the index number shown in the displayed student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"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","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"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","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":20,"-":183,"dez2003":2}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"**T_Assistant 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":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":"* If you are interested in using T_Assistant, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":"* If you are interested about developing T_Assistant, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":15,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":10,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" this.model.setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" this.model.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" return this.model.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":22,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_STUDENT_NO_NOT_FOUND \u003d \"The student number provided is not found\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" .append(\"; Student Number:\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" .append(student.getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" student.getTags().forEach(builder::append);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * Formats the {@code group} for display to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public static String format(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" builder.append(group.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":7,"SooYap":7,"YANYAN-w":3,"-":43}},{"path":"src/main/java/seedu/address/logic/commands/AddGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"add_group\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a group to the address book. \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"GROUPNAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"Group 1 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the address book\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final Group toAdd;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" * Creates an AddGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" toAdd \u003d group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof AddGroupCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" AddGroupCommand otherAddGroupCommand \u003d (AddGroupCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return toAdd.equals(otherAddGroupCommand.toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":71}},{"path":"src/main/java/seedu/address/logic/commands/AddStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":" public static final String COMMAND_WORD \u003d \"add_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"NAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"STUDENT_NUMBER\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"John Doe \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"A02345678J\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" private final Student toAdd;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" * Creates an AddStudentCommand to add the specified {@code Student}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof AddStudentCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" AddStudentCommand otherAddCommand \u003d (AddStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":59,"dez2003":14}},{"path":"src/main/java/seedu/address/logic/commands/DeleteStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * Deletes a student from the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" public static final String COMMAND_WORD \u003d \"delete_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" + \": Deletes the student identified by the student number used.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + \"Parameters: STUDENT_NUMBER (must be a string starting with \u0027A\u0027, followed by 7 numeric figures, \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" + \"and ended with a capital letter\u0027)\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_STUDENT_NUMBER + \" \" + \"A0123456B\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final StudentNumber targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand(StudentNumber sno) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" this.targetStudentNo \u003d sno;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" boolean hasFoundTarget \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":" Student studentToBeDeleted \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" for (Student stu : lastShownList) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" if (stu.getStudentNumber().equals(targetStudentNo)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" hasFoundTarget \u003d true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" studentToBeDeleted \u003d stu;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" break;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" if (!hasFoundTarget) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":" throw new CommandException(Messages.MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" model.deletePerson(studentToBeDeleted);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(studentToBeDeleted)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":" public StudentNumber getTargetStudentNo() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof DeleteStudentCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand otherDeleteStudentCommand \u003d (DeleteStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo.equals(otherDeleteStudentCommand.targetStudentNo);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"YANYAN-w"},"content":" .add(\"targetStudentNumber\", targetStudentNo)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":10,"YANYAN-w":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" + \"[\" + PREFIX_STUDENT_NAME + \"NAME] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * @param editPersonDescriptor details to edit the student with","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d createEditedPerson(studentToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":" System.out.println(\"studentToEdit: \" + studentToEdit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":" System.out.println(\"editedStudent: \" + editedStudent);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" if (!studentToEdit.isSamePerson(editedStudent) \u0026\u0026 model.hasPerson(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" private static Student createEditedPerson(Student studentToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(studentToEdit.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber updatedStudentNumber \u003d editPersonDescriptor.getStudentNumber()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" .orElse(studentToEdit.getStudentNumber());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedEmail);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedStudentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"YANYAN-w"},"content":" return new Student(updatedName, updatedEmail, updatedTags, updatedStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"YANYAN-w"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"dez2003"},"content":" setStudentNumber(toCopy.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"YANYAN-w"},"content":" public void setStudentNumber(StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"dez2003"},"content":" public Optional\u003cStudentNumber\u003e getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"dez2003"},"content":" return Optional.ofNullable(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(studentNumber, otherEditPersonDescriptor.studentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"YANYAN-w":8,"-":182,"dez2003":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandParser implements Parser\u003cAddGroupCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP_NAME)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUP_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" Group group \u003d new Group(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommand(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" * Parses input arguments and creates a new AddStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParser implements Parser\u003cAddStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" * Parses the given {@code String} of arguments in the context of the AddStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * and returns an AddStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" Student student \u003d new Student(name, email, tagList, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommand(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":38,"dez2003":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" case AddStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" case DeleteStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return new DeleteStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" case AddGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":7,"-":80,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" public static final Prefix PREFIX_STUDENT_NAME \u003d new Prefix(\"sn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public static final Prefix PREFIX_GROUP_NAME \u003d new Prefix(\"gn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":" public static final Prefix PREFIX_STUDENT_NUMBER \u003d new Prefix(\"sno/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"YANYAN-w":1,"-":14,"dez2003":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":" * Parses input arguments and creates a new DeleteStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandParser implements Parser\u003cDeleteStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" * and returns a DeleteStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" return new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"YANYAN-w":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NAME).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" editPersonDescriptor.setStudentNumber(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setStudentNumber(ParserUtil.parseStudentNumber(argMultimap","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" .getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SooYap":2,"YANYAN-w":2,"-":73,"dez2003":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":32}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"YANYAN-w"},"content":" * Parses a {@code String student number} into a {@code StudentNumber}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the given {@code studentNumber} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public static StudentNumber parseStudentNumber(String studentNumber) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" String trimmedNumber \u003d studentNumber.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(trimmedNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"YANYAN-w"},"content":" throw new ParseException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" return new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" * Parses a {@code String name} into a {@code GroupName}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public static GroupName parseGroupName(String groupName) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" String trimmedName \u003d groupName.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" throw new ParseException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return new GroupName(trimmedName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":21,"YANYAN-w":11,"-":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList groups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public AddressBook() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" this.students.setPersons(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of the student list with {@code groups}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" * {@code groups} must not contain duplicate students.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" //// student-level operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" return students.contains(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" students.add(p);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" * book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" students.setPerson(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" students.remove(key);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" return groups.contains(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" groups.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" * book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"ghos7ie"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"ghos7ie"},"content":" return students.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":31,"SooYap":40,"-":107}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" boolean hasPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" * Deletes the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" void deletePerson(Student target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Adds the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" void addPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" * be the same as another existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" void setPerson(Student target, Student editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" * Adds the given group.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" * {@code group} must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" * The group identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" * be the same as another existing group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"SooYap":30,"-":72}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.addressBook.getGroupList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateStudents();;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" return this.userPrefs.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" return addressBook.hasGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" addressBook.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"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-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" return filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":" return filteredGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"ghos7ie"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":49,"-":133}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":3,"-":15}},{"path":"src/main/java/seedu/address/model/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":" * Represents which state of display (Student, Group, Task) the GUI is currently in.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":" * Saved in UserPrefs.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"public class State {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" private final String state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" public State(String state) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" this.state \u003d state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public boolean equals(State other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" return this.state.equals(other.state);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STATE \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" private static final State GROUP_STATE \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private State guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Students\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d DEFAULT_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Groups\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" return this.guiState;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"SooYap":21,"-":87}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class Group {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final int MAXIMUM_STUDENTS_IN_GROUP \u003d 5;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final GroupName groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private final Set\u003cStudent\u003e students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName, Set\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public GroupName getGroupName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" return this.groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public Set\u003cStudent\u003e getStudents() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" return Collections.unmodifiableSet(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Adds a given student into the {@code group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" * There can be a maximum of 5 students in each group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @param student The {@code student} object to be added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public void add(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" if (students.size() \u003c MAXIMUM_STUDENTS_IN_GROUP) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" students.add(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (otherGroup \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" return otherGroup !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherGroup.getGroupName().equals(getGroupName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * Returns true if both group have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group otherStudent \u003d (Group) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" return groupName.equals(otherStudent.groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 students.equals(otherStudent.students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" return Objects.hash(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" .add(\"groupname\", groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":106}},{"path":"src/main/java/seedu/address/model/group/GroupName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" * Represents a Group name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"public class GroupName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \"Group Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" public GroupName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof seedu.address.model.group.GroupName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" seedu.address.model.group.GroupName otherName \u003d (seedu.address.model.group.GroupName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":67}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedStudent) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (target.isSameGroup(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" * {@code students} must not contain duplicate groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" if (!groupsAreUnique(students)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" return internalList.equals(otherUniqueGroupList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":151}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s email in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":77}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s name in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":64}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class Student {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":" private final StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber, Optional\u003cString\u003e group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber, group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" public StudentNumber getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" return studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" public Optional\u003cString\u003e getGroup() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" public boolean isSamePerson(Student otherStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 otherStudent.getStudentNumber().equals(getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherStudent.getName().toString().toLowerCase().equals(getName().toString().toLowerCase());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 tags.equals(otherStudent.tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 studentNumber.equals(otherStudent.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"YANYAN-w"},"content":" return Objects.hash(name, email, studentNumber, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" .add(\"group\", group.orElse(\"\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":10,"SooYap":23,"YANYAN-w":9,"-":83,"dez2003":7}},{"path":"src/main/java/seedu/address/model/student/StudentNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dez2003"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"dez2003"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":" * Represents a Student\u0027s student number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentNumber(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"public class StudentNumber {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":" \"Student numbers should be of the format A01234567X\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":" + \"1. The student number should start with A0.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":" + \"2. This is followed by exactly 7 numerical digits.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":" + \"3. Lastly, it ends with another letter, which could be A or any other uppercase letter.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"dez2003"},"content":" private static final String START_PART_REGEX \u003d \"^A0\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final String DIGIT_PART_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" private static final String END_PART_REGEX \u003d \"[A-Z]$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":" public static final String VALIDATION_REGEX \u003d START_PART_REGEX + DIGIT_PART_REGEX + END_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" * @param studentNumber A valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public StudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" checkArgument(isValidStudentNumber(studentNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" value \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" * Returns if a given string is a valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" public static boolean isValidStudentNumber(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof StudentNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" StudentNumber otherStudentNumber \u003d (StudentNumber) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" return value.equals(otherStudentNumber.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"dez2003"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"dez2003":67}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * updating of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * @see Student#isSamePerson(Student)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" if (!target.isSamePerson(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(UniqueStudentList replacement) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" if (!personsAreUnique(students)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" private boolean personsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" if (students.get(i).isSamePerson(students.get(j))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":44,"-":107}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":10}},{"path":"src/main/java/seedu/address/model/student/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"ghos7ie":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" public static Student[] getSamplePersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" return new Student[]{","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" getTagSet(\"friends\"), new StudentNumber(\"A0737935G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\", \"friends\"), new StudentNumber(\"A0597991H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" getTagSet(\"neighbours\"), new StudentNumber(\"A0632228J\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"David Li\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" getTagSet(\"family\"), new StudentNumber(\"A0965321G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" getTagSet(\"classmates\"), new StudentNumber(\"A0467953H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\"), new StudentNumber(\"A0122764H\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" for (Student sampleStudent : getSamplePersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":6,"-":33,"dez2003":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private final String groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given student details.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" @JsonCreator","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(@JsonProperty(\"groupname\") String groupName,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" if (students !\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" groupName \u003d source.getGroupName().fullName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final List\u003cStudent\u003e allStudents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedPerson student : this.students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" allStudents.add(student.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" if (groupName \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" GroupName.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(groupName)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" final GroupName modelGroupName \u003d new GroupName(groupName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" final Set\u003cStudent\u003e modelStudents \u003d new HashSet\u003c\u003e(allStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" return new Group(modelGroupName, modelStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final String studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given student details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" @JsonProperty(\"student number\") String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(Student source) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" studentNumber \u003d source.getStudentNumber().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" if (studentNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"dez2003"},"content":" StudentNumber.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(studentNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"YANYAN-w"},"content":" final StudentNumber modelStudentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" return new Student(modelName, modelEmail, modelTags, modelStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"YANYAN-w":9,"-":72,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Groups list contains duplicate groups(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" persons.addAll(source.getStudentList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" groups.addAll(source.getGroupList().stream().map(JsonAdaptedGroup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" if (addressBook.hasGroup(group)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":17,"-":54}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"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-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public final Group group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private VBox students;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupCode} with the given {@code Group} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" name.setText(group.getGroupName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group.getStudents().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.toString())));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" setGraphic(new GroupCard(group, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STUDENT \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_GROUP \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" private StackPane informationListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" studentListPanel \u003d new StudentListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" if (this.logic.getState().equals(DEFAULT_STUDENT)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" public StudentListPanel getStudentListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" return studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public GroupListPanel getGroupListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" return groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" public final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" private Label studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" * Creates a {@code PersonCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" public PersonCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" studentNumber.setText(student.getStudentNumber().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"-":48,"dez2003":3}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" private ListView\u003cStudent\u003e personListView;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public StudentListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" personListView.setItems(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code PersonCard}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" class PersonListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" setGraphic(new PersonCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":4,"-":36}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"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-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" \u003cVBox fx:id\u003d\"students\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":33}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u003cVBox fx:id\u003d\"studentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" \u003cStackPane fx:id\u003d\"informationListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"1000\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":2,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" \u003cLabel fx:id\u003d\"studentNumber\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$student number\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":34,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENT_NO_NOT_FOUND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" String deleteCommand \u003d \"delete_student sno/A0000001A\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" assertCommandException(deleteCommand, MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"dez2003"},"content":" String addCommand \u003d AddStudentCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(expectedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":2,"YANYAN-w":1,"-":162,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/commands/AddGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private static final GroupName VALID_GROUPNAME \u003d new GroupName(\"Team1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGroupCommand(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" CommandResult commandResult \u003d new AddGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertEquals(String.format(AddGroupCommand.MESSAGE_SUCCESS, Messages.format(validGroup)),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(Arrays.asList(validGroup), modelStub.groupsAdded);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ModelStub modelStub \u003d new ModelStubWithGroup(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertThrows(CommandException.class, AddGroupCommand.MESSAGE_DUPLICATE_GROUP, () -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" addGroupCommand.execute(modelStub));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" Group teamTwo \u003d new Group(new GroupName(\"Team 2\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamTwoCommand \u003d new AddGroupCommand(teamTwo);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommandCopy \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(addTeamTwoCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + teamOne + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, addTeamOneCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SooYap"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" * A Model stub that contains a single group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" private final Group group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SooYap"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"SooYap"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SooYap"},"content":" * A Model stub that always accept the group being added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"SooYap"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SooYap"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SooYap"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SooYap"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":232}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":" * Contains integration tests (interaction with the Model) for {@code AddStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" assertCommandSuccess(new AddStudentCommand(validStudent), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" assertCommandFailure(new AddStudentCommand(studentInList), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" AddStudentCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":1,"-":38,"dez2003":6}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStudentCommand(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" CommandResult commandResult \u003d new AddStudentCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" assertEquals(String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.personsAdded);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(validStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" assertThrows(CommandException.class, AddStudentCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" addCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" Student alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" Student bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommand \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addBobCommand \u003d new AddStudentCommand(bob);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommandCopy \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"dez2003"},"content":" String expected \u003d AddStudentCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" private final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"ghos7ie"},"content":" ModelStubWithPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"ghos7ie"},"content":" return this.student.isSamePerson(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":" final ArrayList\u003cStudent\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"ghos7ie"},"content":" return personsAdded.stream().anyMatch(student::isSamePerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":" personsAdded.add(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":30,"SooYap":14,"-":171,"dez2003":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_AMY \u003d \"A0234567J\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_BOB \u003d \"A0224466H\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_ONE \u003d \"Team1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_TWO \u003d \"Team2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_THREE \u003d \"Team3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FOUR \u003d \"Team4\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FIVE \u003d \"Team5\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_ONE \u003d \"Group1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_TEN \u003d \"Group10\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_STUDENT_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-10-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"ghos7ie"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"SooYap":9,"-":102,"dez2003":10}},{"path":"src/test/java/seedu/address/logic/commands/DeleteStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.DeleteStudentCommandParser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"YANYAN-w"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":" * {@code DeleteStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public void execute_validStudentNumber_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" Student studentToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber studentNumber \u003d studentToDelete.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" String expectedMessage \u003d String.format(DeleteStudentCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" Messages.format(studentToDelete));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" expectedModel.deletePerson(studentToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" assertCommandSuccess(deleteStudentCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" public void execute_invalidStudentNumber_throwsCommandException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertParseFailure(new DeleteStudentCommandParser(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" \"B1234567\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno1 \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno2 \u003d new StudentNumber(\"A0123456C\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommand \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteSecondCommand \u003d new DeleteStudentCommand(sno2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommandCopy \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"YANYAN-w"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber targetNumber \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(targetNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" String expected \u003d DeleteStudentCommand.class.getCanonicalName() + \"{targetStudentNumber\u003d\" + targetNumber + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" assertEquals(expected, deleteStudentCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"YANYAN-w"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"YANYAN-w"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":6,"YANYAN-w":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" Student editedStudent \u003d new PersonBuilder().build(); //Amy Bee, amy@gmail.com, A01234567X","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" Student lastStudent \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(lastStudent, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student studentInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d new PersonBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"dez2003"},"content":" Student firstStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); //0","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"dez2003"},"content":" System.out.println(descriptor);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"dez2003"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor); //1","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" new EditPersonDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":2,"-":158,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", student number\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getStudentNumber().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":55,"dez2003":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":89}},{"path":"src/test/java/seedu/address/logic/parser/AddStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" private AddStudentCommandParser parser \u003d new AddStudentCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudentMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudentMultipleTags));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"dez2003"},"content":" // multiple student numbers","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"dez2003"},"content":" validExpectedPersonString + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"dez2003"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"dez2003"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"dez2003"},"content":" + VALID_TAG_FRIEND + STUDENT_NUMBER_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"dez2003"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":15,"-":102,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" AddStudentCommand command \u003d (AddStudentCommand) parser.parseCommand(PersonUtil.getAddCommand(student));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" assertEquals(new AddStudentCommand(student), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand command \u003d (DeleteStudentCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand.COMMAND_WORD + \" sno/\" + ALICE.getStudentNumber().toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" assertEquals(new DeleteStudentCommand(ALICE.getStudentNumber()), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(student).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"SooYap":5,"-":89,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/parser/DeleteStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class DeleteStudentCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private DeleteStudentCommandParser parser \u003d new DeleteStudentCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertParseSuccess(parser, \" sno/ \" + ALICE.getStudentNumber().toString(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" new DeleteStudentCommand(ALICE.getStudentNumber()));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"SooYap":8,"-":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Student} being edited,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"dez2003"},"content":" // AddStudentCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" + TAG_DESC_FRIEND + EMAIL_DESC_AMY + TAG_DESC_FRIEND + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"ghos7ie":18,"-":155,"dez2003":1}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"ghos7ie":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"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","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":142}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" assertTrue(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return groups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22,"SooYap":24,"-":88}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" assertFalse(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" modelManager.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" assertTrue(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":19,"-":131}},{"path":"src/test/java/seedu/address/model/group/GroupNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"public class GroupNameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new GroupName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GroupName(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e GroupName.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d new GroupName(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(new GroupName(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(groupName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(new GroupName(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":60}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class GroupTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" private static final Group FIRST_GROUP \u003d new Group(new GroupName(GROUP_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" private static final Group SECOND_GROUP \u003d new Group(new GroupName(TEAM_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public void isSameGroup() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.isSameGroup(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertTrue(SECOND_GROUP.isSameGroup(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.isSameGroup(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" Group firstGroupCopy \u003d new Group(FIRST_GROUP.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(firstGroupCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(5));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" String expected \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Group.class.getCanonicalName() + \"{groupname\u003d\" + FIRST_GROUP.getGroupName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" + \", students\u003d\" + FIRST_GROUP.getStudents() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, FIRST_GROUP.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertFalse(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void contains_groupInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertTrue(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void add_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.add(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void add_duplicateGroup_throwsDuplicateGroupException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.add(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullTargetGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(null, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullEditedGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setGroup_targetGroupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void remove_groupDoesNotExist_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.remove(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" public void remove_existingGroup_removesGroup() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.remove(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullUniqueGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup((Group) null, (Group) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void setGroup_listWithDuplicateGroup_throwsDuplicatePersonException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":93}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":81}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.JASON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"public class StudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e student.getTags().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(JASON.isSamePerson(JASON));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" // different student number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Student editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_AMY.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" // student name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" String expected \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", student number\u003d\" + ALICE.getStudentNumber()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" + \", group\u003d\" + ALICE.getGroup().orElse(\"\") + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":11,"SooYap":6,"-":74,"dez2003":4}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(null, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(ALICE, null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.setPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPerson(ALICE, BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((UniqueStudentList) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(expectedUniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPersons(listWithDuplicateStudents));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":60,"-":114}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String INVALID_NAME \u003d \"Te@m1\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(teamOne);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertEquals(teamOne, group.toModelType());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(INVALID_NAME, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d GroupName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(null, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, GroupName.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, invalidTags, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":66,"dez2003":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" public void readAddressBook_invalidGroupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidGroupAddressBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":5,"-":107}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.TypicalGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final Path DUPLICATE_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private static final Path INVALID_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Path TYPICAL_GROUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" public void toModelType_typicalGroupsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GROUPS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalGroups.getTypicalAddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SooYap":28,"-":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public AddressBookBuilder withPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code student}\u0027s details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptorBuilder(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" descriptor.setName(student.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" descriptor.setEmail(student.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" descriptor.setTags(student.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(student.getStudentNumber());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"dez2003"},"content":" public EditPersonDescriptorBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(new StudentNumber(studentNumber));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":66,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String DEFAULT_STUDENT_NUMBER \u003d \"A0123456X\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d new StudentNumber(DEFAULT_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Initializes the PersonBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" public PersonBuilder(Student studentToCopy) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d studentToCopy.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group \u003d studentToCopy.getGroup();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" * Sets the {@code String} group name of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" public PersonBuilder withGroup(String group) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.of(group);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" * Sets the {@code StudentNumber} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"dez2003"},"content":" public PersonBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" * Builds a {@code Student}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"dez2003"},"content":" * @returns A Student.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" public Student build() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" return group.isPresent()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"dez2003"},"content":" ? new Student(name, email, tags, studentNumber, group) : new Student(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":8,"-":66,"dez2003":14}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A utility class for Student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" return AddStudentCommand.COMMAND_WORD + \" \" + getPersonDetails(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static String getPersonDetails(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream().forEach(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NUMBER + student.getStudentNumber().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_STUDENT_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" descriptor.getStudentNumber().ifPresent(studentNumber -\u003e sb.append(PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" .append(studentNumber.value));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":42,"dez2003":10}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public static Student getPerson(Model model, Index index) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_TEN;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FIVE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FOUR;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_THREE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_TWO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Returns an {@code AddressBook} with all the typical persons and groups.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FIVE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FOUR)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_THREE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_TWO)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_TEN)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" return ab;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final Student ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .withEmail(\"alice@example.com\").withTags(\"friends\").withStudentNumber(\"A0111111J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public static final Student BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" .withEmail(\"johnd@example.com\").withTags(\"owesMoney\", \"friends\").withStudentNumber(\"A0222222H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" public static final Student CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" .withEmail(\"heinz@example.com\").withStudentNumber(\"A0333333M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static final Student DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" .withEmail(\"cornelia@example.com\").withTags(\"friends\").withStudentNumber(\"A0444444N\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static final Student ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" .withEmail(\"werner@example.com\").withStudentNumber(\"A0555555H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public static final Student FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" .withEmail(\"lydia@example.com\").withStudentNumber(\"A0666666J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final Student GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" .withEmail(\"anna@example.com\").withStudentNumber(\"A0888888M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final Student JASON \u003d new PersonBuilder().withName(\"Jason Derulo\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" .withEmail(\"jason@example.com\").withGroup(\"Group 1\").withStudentNumber(\"A0999999J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public static final Student HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" .withEmail(\"stefan@example.com\").withStudentNumber(\"A0969743K\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public static final Student IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .withEmail(\"hans@example.com\").withStudentNumber(\"A0887321S\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" public static final Student AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public static final Student BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" for (Student student : getTypicalPersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" ab.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" public static List\u003cStudent\u003e getTypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":11,"-":38,"dez2003":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"T_Assistant is an **address book made for CS2103 tutors** to easily track their students\u0027 groupings and taskings, optimised for users who prefer a CLI program.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"## Features","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"1. **Store** student information.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"2. **Store** group information and the tasks they have.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"3. **Track** progress of each group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **using** T_Assistant, head over to the [User Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **developing** T_Assistant, head over to the [Developer Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/DeveloperGuide.html)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":14,"YANYAN-w":1,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"### Lewis Lye","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/ghos7ie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"[[github](http://github.com/ghos7ie)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":"### Wang Hongyanyan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/yanyan-w.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"[[github](http://github.com/YANYAN-w)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"### Tan Soo Yap","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"\u003cimg src\u003d\"images/sooyap.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"[[github](https://github.com/SooYap)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"* Role: Developer and Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"* Responsibilities: Dev Ops + Code Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":"### Desiree Sng","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":"\u003cimg src\u003d\"images/dez2003.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"[[github](http://github.com/dez2003)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":5,"YANYAN-w":6,"-":33,"dez2003":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant Developer Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"original source as well }_","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":"**`Main`** (consisting of classes [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":"`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":"charge of the app launch and shut down.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"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","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":"the command `delete 1`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" `interface` mentioned in the previous point.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"The **API** of this component is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":"`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"`StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":"the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":"are in the `src/main/resources/view` folder. For example, the layout of the [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":"`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":"is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":"call as an example.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":"PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"ghos7ie"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a student).\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":133,"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" `Command` object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"ghos7ie"},"content":"`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"ghos7ie"},"content":"`Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"ghos7ie"},"content":"needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"ghos7ie"},"content":"`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"ghos7ie"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"ghos7ie"},"content":" objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"ghos7ie"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"ghos7ie"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"ghos7ie"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"ghos7ie"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":"following operations:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"ghos7ie"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"ghos7ie"},"content":"`Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"ghos7ie"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"ghos7ie"},"content":"Step 2. The user executes `delete 5` command to delete the 5th student in the address book. The `delete` command calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"ghos7ie"},"content":"saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"ghos7ie"},"content":"Step 3. The user executes `add n/David …​` to add a new student. The `add` command also calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"ghos7ie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"ghos7ie"},"content":"not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"ghos7ie"},"content":"Step 4. The user now decides that adding the student was a mistake, and decides to undo that action by executing the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"ghos7ie"},"content":"`undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"ghos7ie"},"content":"to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"ghos7ie"},"content":"previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"ghos7ie"},"content":"case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"ghos7ie"},"content":"lifeline reaches the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"ghos7ie"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"ghos7ie"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"ghos7ie"},"content":"book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"ghos7ie"},"content":"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-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"ghos7ie"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ghos7ie"},"content":"`list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ghos7ie"},"content":"the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ghos7ie"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ghos7ie"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ghos7ie"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ghos7ie"},"content":"desktop applications follow.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ghos7ie"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the student being deleted).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"ghos7ie"},"content":"* CS2103 tutor","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"ghos7ie"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"ghos7ie"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"ghos7ie"},"content":"* Manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"ghos7ie"},"content":"* Helps to track the following:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"ghos7ie"},"content":" * Students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"ghos7ie"},"content":" * Their groups","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"ghos7ie"},"content":" * Group projects’ progress","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"ghos7ie"},"content":" * TA will create Groups and assign tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"ghos7ie"},"content":" * Mark the tasks as the groups complete them","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"ghos7ie"},"content":"| Priority | As a …. | I want to… | So that I can… |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"ghos7ie"},"content":"|----------|------------------------|-----------------------------------------------|---------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | beginner TA | add students into the system | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | busy TA | remove projects/tasks | not feel overwhelmed |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | TA that prefers typing | carry out all the functions through CLI | just use my keyboard |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"SooYap"},"content":"| `* * *` | disorganized TA | mark a team’s tasks as complete | keep track of my students’ progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | sort students by their groupings | keep track of all the groups under my instruction |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | remove students no longer taking this module | keep the contact list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | search for a student by name or project group | quickly find their contact details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | see what I added (groups/projects) before | quickly reference what I added. |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | highly motivated TA | add students into their projects | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"ghos7ie"},"content":"| `*` | TA that makes mistakes | edit student particulars | correct my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"ghos7ie"},"content":"| `*` | clumsy TA | edit tasks/projects | fix my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"ghos7ie"},"content":"(For all use cases below, the **System** is the `T_Assistant` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"ghos7ie"},"content":"otherwise)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"ghos7ie"},"content":"**Use case: List Students**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Student into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Student to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Group into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Group to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Group already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"ghos7ie"},"content":"* 3d. Student is in another Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"ghos7ie"},"content":" * 3d1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student to a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a Student to a Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the Student to the Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"SooYap"},"content":"**Use case: Mark Team\u0027s task as Complete**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"SooYap"},"content":"1. User marks task as complete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"SooYap"},"content":"2. T_Assistant marks the task accordingly.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"SooYap"},"content":"* 1b. The user marks an already complete task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Student from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"SooYap"},"content":"1. User requests to list all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"SooYap"},"content":"2. T_Assistant shows all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"SooYap"},"content":"3. User deletes a student from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"SooYap"},"content":"4. T_Assistant adds student to the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"SooYap"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"SooYap"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"SooYap"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"SooYap"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"SooYap"},"content":"**Use case: List all Groups**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"SooYap"},"content":"1. User lists all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"SooYap"},"content":"**Use case: List all Tasks**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"SooYap"},"content":"1. User lists all tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"SooYap"},"content":"**Use case: Add Task to Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"SooYap"},"content":"1. User adds a task to a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"SooYap"},"content":"* 1b. A duplicate task is entered.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant informs user that the task already exists.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Task from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"SooYap"},"content":"1. User removes a task from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"SooYap"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"ghos7ie"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"ghos7ie"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"SooYap"},"content":"* **Student Number**: Unique identifier for each student","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"SooYap"},"content":"* **Group Name**: Unique identifier for each group","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"ghos7ie"},"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-10-03","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"ghos7ie"},"content":" optimum.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"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","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"ghos7ie"},"content":"1. Deleting a student while all students are being shown","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"ghos7ie"},"content":" 1. Prerequisites: List all students using the `list` command. Multiple students in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"ghos7ie"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"ghos7ie"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"ghos7ie"},"content":" Expected: No student is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"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","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":285,"SooYap":129,"-":324,"dez2003":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant User Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":"T_Assistant 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, T_Assistant can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"**Tip:** A student can have any number of tags (including 0)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"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-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":"* When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":"* You can remove all the student’s tags by typing `t/` without","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st student to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd student to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"Finds students whose names contain any of the given keywords.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":"Deletes the specified student from the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":"* The index refers to the index number shown in the displayed student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"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","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"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","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":20,"-":183,"dez2003":2}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"**T_Assistant 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":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":"* If you are interested in using T_Assistant, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":"* If you are interested about developing T_Assistant, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":15,"dez2003":4}},{"path":"src/main/java/seedu/address/commons/core/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":" * Represents which state of display (Student, Group, Task) the GUI is currently in.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":" * Saved in UserPrefs.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"public class State {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" private static final String DEFAULT \u003d \"Students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" private final String state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" public State() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" this.state \u003d DEFAULT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public State(String state) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" this.state \u003d state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public boolean equals(State other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" return this.state.equals(other.state);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":22}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":10,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" this.model.setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" this.model.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" return this.model.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":22,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_STUDENT_NO_NOT_FOUND \u003d \"The student number provided is not found\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" .append(\"; Student Number:\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" .append(student.getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" student.getTags().forEach(builder::append);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * Formats the {@code group} for display to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public static String format(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" builder.append(group.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":7,"SooYap":7,"YANYAN-w":3,"-":43}},{"path":"src/main/java/seedu/address/logic/commands/AddGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"add_group\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a group to the address book. \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"GROUPNAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"Group 1 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the address book\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final Group toAdd;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" * Creates an AddGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" toAdd \u003d group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof AddGroupCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" AddGroupCommand otherAddGroupCommand \u003d (AddGroupCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return toAdd.equals(otherAddGroupCommand.toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":71}},{"path":"src/main/java/seedu/address/logic/commands/AddStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":" public static final String COMMAND_WORD \u003d \"add_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"NAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"STUDENT_NUMBER\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"John Doe \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"A02345678J\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" private final Student toAdd;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" * Creates an AddStudentCommand to add the specified {@code Student}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof AddStudentCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" AddStudentCommand otherAddCommand \u003d (AddStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":59,"dez2003":14}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" private int changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d -1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d -1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser}, the change state marker,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" public CommandResult(String feedbackToUser, int changeState) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public int getChangeState() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" return changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":17,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/DeleteStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * Deletes a student from the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" public static final String COMMAND_WORD \u003d \"delete_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" + \": Deletes the student identified by the student number used.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + \"Parameters: STUDENT_NUMBER (must be a string starting with \u0027A\u0027, followed by 7 numeric figures, \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" + \"and ended with a capital letter\u0027)\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_STUDENT_NUMBER + \" \" + \"A0123456B\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final StudentNumber targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand(StudentNumber sno) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" this.targetStudentNo \u003d sno;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" boolean hasFoundTarget \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":" Student studentToBeDeleted \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" for (Student stu : lastShownList) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" if (stu.getStudentNumber().equals(targetStudentNo)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" hasFoundTarget \u003d true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" studentToBeDeleted \u003d stu;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" break;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" if (!hasFoundTarget) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":" throw new CommandException(Messages.MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" model.deletePerson(studentToBeDeleted);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(studentToBeDeleted)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":" public StudentNumber getTargetStudentNo() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof DeleteStudentCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand otherDeleteStudentCommand \u003d (DeleteStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo.equals(otherDeleteStudentCommand.targetStudentNo);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"YANYAN-w"},"content":" .add(\"targetStudentNumber\", targetStudentNo)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":10,"YANYAN-w":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" + \"[\" + PREFIX_STUDENT_NAME + \"NAME] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * @param editPersonDescriptor details to edit the student with","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d createEditedPerson(studentToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":" System.out.println(\"studentToEdit: \" + studentToEdit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":" System.out.println(\"editedStudent: \" + editedStudent);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" if (!studentToEdit.isSamePerson(editedStudent) \u0026\u0026 model.hasPerson(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" private static Student createEditedPerson(Student studentToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(studentToEdit.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber updatedStudentNumber \u003d editPersonDescriptor.getStudentNumber()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" .orElse(studentToEdit.getStudentNumber());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedEmail);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedStudentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"YANYAN-w"},"content":" return new Student(updatedName, updatedEmail, updatedTags, updatedStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"YANYAN-w"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"dez2003"},"content":" setStudentNumber(toCopy.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"YANYAN-w"},"content":" public void setStudentNumber(StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"dez2003"},"content":" public Optional\u003cStudentNumber\u003e getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"dez2003"},"content":" return Optional.ofNullable(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(studentNumber, otherEditPersonDescriptor.studentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"YANYAN-w":8,"-":182,"dez2003":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class ListGroupCommand extends Command {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"list_groups\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public static final int LIST_GROUP_MARKER \u003d 1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all groups. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all groups\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Creates an ListGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public ListGroupCommand() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" model.setStateGroups();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" return new CommandResult(MESSAGE_SUCCESS, LIST_GROUP_MARKER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":42}},{"path":"src/main/java/seedu/address/logic/commands/ListStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class ListStudentCommand extends Command {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"list_students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public static final int LIST_STUDENT_MARKER \u003d 0;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all students. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Creates an ListStudentCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public ListStudentCommand() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" model.setStateStudents();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" return new CommandResult(MESSAGE_SUCCESS, LIST_STUDENT_MARKER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":42}},{"path":"src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandParser implements Parser\u003cAddGroupCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP_NAME)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUP_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" Group group \u003d new Group(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommand(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" * Parses input arguments and creates a new AddStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParser implements Parser\u003cAddStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" * Parses the given {@code String} of arguments in the context of the AddStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * and returns an AddStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" Student student \u003d new Student(name, email, tagList, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommand(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":38,"dez2003":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListGroupCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" case AddStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" case DeleteStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" return new DeleteStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" case AddGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" case ListStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" return new ListStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" case ListGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" return new ListGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":15,"-":76,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" public static final Prefix PREFIX_STUDENT_NAME \u003d new Prefix(\"sn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public static final Prefix PREFIX_GROUP_NAME \u003d new Prefix(\"gn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":" public static final Prefix PREFIX_STUDENT_NUMBER \u003d new Prefix(\"sno/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"YANYAN-w":1,"-":13,"dez2003":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":" * Parses input arguments and creates a new DeleteStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandParser implements Parser\u003cDeleteStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" * and returns a DeleteStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" return new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"YANYAN-w":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NAME).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" editPersonDescriptor.setStudentNumber(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setStudentNumber(ParserUtil.parseStudentNumber(argMultimap","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" .getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SooYap":2,"YANYAN-w":2,"-":73,"dez2003":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListGroupCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new ListStudentCommand object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"public class ListGroupCommandParser implements Parser\u003cListGroupCommand\u003e {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * and returns an ListStudentCommand object for execution.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" public ListGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" if (!args.trim().equals(\"\")) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" return new ListGroupCommand();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":27}},{"path":"src/main/java/seedu/address/logic/parser/ListStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new ListStudentCommand object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class ListStudentCommandParser implements Parser\u003cListStudentCommand\u003e {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * and returns an ListStudentCommand object for execution.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public ListStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" if (!args.trim().equals(\"\")) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" return new ListStudentCommand();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"YANYAN-w"},"content":" * Parses a {@code String student number} into a {@code StudentNumber}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the given {@code studentNumber} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public static StudentNumber parseStudentNumber(String studentNumber) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" String trimmedNumber \u003d studentNumber.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(trimmedNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"YANYAN-w"},"content":" throw new ParseException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" return new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" * Parses a {@code String name} into a {@code GroupName}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public static GroupName parseGroupName(String groupName) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" String trimmedName \u003d groupName.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" throw new ParseException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return new GroupName(trimmedName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":21,"YANYAN-w":11,"-":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList groups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public AddressBook() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" this.students.setPersons(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of the student list with {@code groups}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" * {@code groups} must not contain duplicate students.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" //// student-level operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" return students.contains(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" students.add(p);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" * book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" students.setPerson(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" students.remove(key);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" return groups.contains(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" groups.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" * book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"ghos7ie"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"ghos7ie"},"content":" return students.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":31,"SooYap":40,"-":107}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" boolean hasPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" * Deletes the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" void deletePerson(Student target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * Adds the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" void addPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" * be the same as another existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" void setPerson(Student target, Student editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" * Adds the given group.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" * {@code group} must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" * The group identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * be the same as another existing group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"ghos7ie"},"content":" void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"SooYap":31,"-":72}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.addressBook.getGroupList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateStudents();;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return this.userPrefs.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" return addressBook.hasGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" addressBook.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"ghos7ie"},"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-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"ghos7ie"},"content":" return filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" return filteredGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"ghos7ie"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":50,"-":133}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":3,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"SooYap":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STATE \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final State GROUP_STATE \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private State guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Students\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d DEFAULT_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Groups\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return this.guiState;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d newUserPrefs.getState();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"SooYap":23,"-":87}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class Group {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final int MAXIMUM_STUDENTS_IN_GROUP \u003d 5;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final GroupName groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private final Set\u003cStudent\u003e students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName, Set\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public GroupName getGroupName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" return this.groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public Set\u003cStudent\u003e getStudents() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" return Collections.unmodifiableSet(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Adds a given student into the {@code group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" * There can be a maximum of 5 students in each group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @param student The {@code student} object to be added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public void add(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" if (students.size() \u003c MAXIMUM_STUDENTS_IN_GROUP) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" students.add(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (otherGroup \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" return otherGroup !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherGroup.getGroupName().equals(getGroupName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * Returns true if both group have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group otherStudent \u003d (Group) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" return groupName.equals(otherStudent.groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 students.equals(otherStudent.students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" return Objects.hash(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" .add(\"groupname\", groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":106}},{"path":"src/main/java/seedu/address/model/group/GroupName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" * Represents a Group name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"public class GroupName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" \"Group Names should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" public GroupName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof seedu.address.model.group.GroupName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" seedu.address.model.group.GroupName otherName \u003d (seedu.address.model.group.GroupName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":66}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedStudent) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (target.isSameGroup(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" * {@code students} must not contain duplicate groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" if (!groupsAreUnique(students)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" return internalList.equals(otherUniqueGroupList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":151}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s email in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":77}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s name in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":64}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class Student {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":" private final StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber, Optional\u003cString\u003e group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber, group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" public StudentNumber getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" return studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" public Optional\u003cString\u003e getGroup() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" public boolean isSamePerson(Student otherStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 otherStudent.getStudentNumber().equals(getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherStudent.getName().toString().toLowerCase().equals(getName().toString().toLowerCase());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 tags.equals(otherStudent.tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 studentNumber.equals(otherStudent.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"YANYAN-w"},"content":" return Objects.hash(name, email, studentNumber, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" .add(\"group\", group.orElse(\"\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":10,"SooYap":23,"YANYAN-w":9,"-":83,"dez2003":7}},{"path":"src/main/java/seedu/address/model/student/StudentNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dez2003"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"dez2003"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":" * Represents a Student\u0027s student number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentNumber(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"public class StudentNumber {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":" \"Student numbers should be of the format A01234567X\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":" + \"1. The student number should start with A0.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":" + \"2. This is followed by exactly 7 numerical digits.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":" + \"3. Lastly, it ends with another letter, which could be A or any other uppercase letter.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"dez2003"},"content":" private static final String START_PART_REGEX \u003d \"^A0\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final String DIGIT_PART_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" private static final String END_PART_REGEX \u003d \"[A-Z]$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":" public static final String VALIDATION_REGEX \u003d START_PART_REGEX + DIGIT_PART_REGEX + END_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" * @param studentNumber A valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public StudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" checkArgument(isValidStudentNumber(studentNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" value \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" * Returns if a given string is a valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" public static boolean isValidStudentNumber(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof StudentNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" StudentNumber otherStudentNumber \u003d (StudentNumber) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" return value.equals(otherStudentNumber.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"dez2003"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"dez2003":67}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * updating of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * @see Student#isSamePerson(Student)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" if (!target.isSamePerson(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(UniqueStudentList replacement) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" if (!personsAreUnique(students)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" private boolean personsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" if (students.get(i).isSamePerson(students.get(j))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":44,"-":107}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":10}},{"path":"src/main/java/seedu/address/model/student/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"ghos7ie":6}},{"path":"src/main/java/seedu/address/model/task/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" * Represents a Deadline for a Task.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"public class Deadline implements Comparable\u003cDeadline\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" // safer to use \u0027uuuu\u0027 vs \u0027yyyy\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" // https://stackoverflow.com/questions/","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" // 41177442/uuuu-versus-yyyy-in-datetimeformatter-formatting-pattern-codes-in-java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" private static final String DATETIME_FORMAT \u003d \"uuuu-MM-dd HH:mm\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private static final String DATETIME_OUTPUT_FORMAT \u003d \"d MMM uuuu HH:mm\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" private static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .ofPattern(DATETIME_FORMAT)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public final LocalDateTime time;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code Deadline}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" * @param time A valid LocalDateTime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" public Deadline(LocalDateTime time) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" this.time \u003d time;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" // can add another check to see if deadline is after current date","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" LocalDateTime.parse(test, DATETIME_FORMATTER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" return time.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Deadline otherDeadline)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" return time.equals(otherDeadline.time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" public int compareTo(Deadline o) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" return time.compareTo(o.time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" return time.format(DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":82}},{"path":"src/main/java/seedu/address/model/task/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Enum class representing the status of a Task.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" * {@code MISSED}: Task was not completed on time","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"public enum Status {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" PENDING,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":" COMPLETED;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid Status.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidStatus(String status) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" Status.valueOf(status.toUpperCase());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" * Represents a Task that can be assigned to a Group.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"public class Task {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" //","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" private final TaskName name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" private final Status status;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public Task(TaskName name, Deadline deadline) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" this.status \u003d Status.PENDING;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public TaskName getTaskName() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" return name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public Deadline getDeadline() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" return deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public Status getStatus() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" return status;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" * Returns true if both Tasks have the same name and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" * This defines a weaker notion of equality between two tasks.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" return otherTask !\u003d null","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getTaskName().toString().equalsIgnoreCase(getTaskName().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getDeadline().equals(getDeadline())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getStatus() \u003d\u003d getStatus();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * Returns true if both Tasks have the same name and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Task otherTask)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherTask.getTaskName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 deadline.equals(otherTask.getDeadline())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 status.equals(otherTask.getStatus());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" return Objects.hash(name, deadline, status);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":85}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Task name in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"public class TaskName {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":" public static final String NAME_CONSTRAINT \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" \"Task Name cannot be blank.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\\\\\S\\\\\\\\s]+[\\\\\\\\S]+\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" public final String taskName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code TaskName}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * @param name A valid task name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" checkArgument(isValidName(name), NAME_CONSTRAINT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" taskName \u003d name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid task name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" return taskName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof TaskName otherName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" return taskName.equals(otherName.taskName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" public static Student[] getSamplePersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" return new Student[]{","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" getTagSet(\"friends\"), new StudentNumber(\"A0737935G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\", \"friends\"), new StudentNumber(\"A0597991H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" getTagSet(\"neighbours\"), new StudentNumber(\"A0632228J\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"David Li\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" getTagSet(\"family\"), new StudentNumber(\"A0965321G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" getTagSet(\"classmates\"), new StudentNumber(\"A0467953H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\"), new StudentNumber(\"A0122764H\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" for (Student sampleStudent : getSamplePersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":6,"-":33,"dez2003":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private final String groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given student details.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" @JsonCreator","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(@JsonProperty(\"groupname\") String groupName,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" if (students !\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" groupName \u003d source.getGroupName().fullName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final List\u003cStudent\u003e allStudents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedPerson student : this.students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" allStudents.add(student.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" if (groupName \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" GroupName.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(groupName)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" final GroupName modelGroupName \u003d new GroupName(groupName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" final Set\u003cStudent\u003e modelStudents \u003d new HashSet\u003c\u003e(allStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" return new Group(modelGroupName, modelStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final String studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given student details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" @JsonProperty(\"student number\") String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(Student source) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" studentNumber \u003d source.getStudentNumber().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" if (studentNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"dez2003"},"content":" StudentNumber.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(studentNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"YANYAN-w"},"content":" final StudentNumber modelStudentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" return new Student(modelName, modelEmail, modelTags, modelStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"YANYAN-w":9,"-":72,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Groups list contains duplicate groups(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" persons.addAll(source.getStudentList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" groups.addAll(source.getGroupList().stream().map(JsonAdaptedGroup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" if (addressBook.hasGroup(group)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":17,"-":54}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"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-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public final Group group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private VBox students;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupCode} with the given {@code Group} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" name.setText(group.getGroupName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group.getStudents().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.toString())));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" setGraphic(new GroupCard(group, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STUDENT \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_GROUP \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" private StackPane informationListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" studentListPanel \u003d new StudentListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" if (this.logic.getState().equals(DEFAULT_STUDENT)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public StudentListPanel getStudentListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" return studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" public GroupListPanel getGroupListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" return groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" * Changes the display of the system.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" private void changeSystemState(int changeState) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" if (changeState \u003d\u003d 0) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" if (commandResult.getChangeState() !\u003d -1) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" changeSystemState(commandResult.getChangeState());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"SooYap":35,"-":192}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" public final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" private Label studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" * Creates a {@code PersonCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" public PersonCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" studentNumber.setText(student.getStudentNumber().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"-":48,"dez2003":3}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" private ListView\u003cStudent\u003e personListView;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public StudentListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" personListView.setItems(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code PersonCard}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" class PersonListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" setGraphic(new PersonCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":4,"-":36}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"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-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" \u003cVBox fx:id\u003d\"students\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":33}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u003cVBox fx:id\u003d\"studentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" \u003cStackPane fx:id\u003d\"informationListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"1000\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":2,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" \u003cLabel fx:id\u003d\"studentNumber\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$student number\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":34,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENT_NO_NOT_FOUND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" String deleteCommand \u003d \"delete_student sno/A0000001A\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" assertCommandException(deleteCommand, MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"dez2003"},"content":" String addCommand \u003d AddStudentCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(expectedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":2,"YANYAN-w":1,"-":155,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/commands/AddGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private static final GroupName VALID_GROUPNAME \u003d new GroupName(\"Team1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGroupCommand(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" CommandResult commandResult \u003d new AddGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertEquals(String.format(AddGroupCommand.MESSAGE_SUCCESS, Messages.format(validGroup)),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(Arrays.asList(validGroup), modelStub.groupsAdded);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ModelStub modelStub \u003d new ModelStubWithGroup(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertThrows(CommandException.class, AddGroupCommand.MESSAGE_DUPLICATE_GROUP, () -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" addGroupCommand.execute(modelStub));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" Group teamTwo \u003d new Group(new GroupName(\"Team 2\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamTwoCommand \u003d new AddGroupCommand(teamTwo);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommandCopy \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(addTeamTwoCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + teamOne + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, addTeamOneCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SooYap"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" * A Model stub that contains a single group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" private final Group group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SooYap"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"SooYap"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SooYap"},"content":" * A Model stub that always accept the group being added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"SooYap"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SooYap"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SooYap"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SooYap"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":232}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":" * Contains integration tests (interaction with the Model) for {@code AddStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" assertCommandSuccess(new AddStudentCommand(validStudent), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" assertCommandFailure(new AddStudentCommand(studentInList), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" AddStudentCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":1,"-":38,"dez2003":6}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStudentCommand(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" CommandResult commandResult \u003d new AddStudentCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" assertEquals(String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.personsAdded);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(validStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" assertThrows(CommandException.class, AddStudentCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" addCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" Student alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" Student bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommand \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addBobCommand \u003d new AddStudentCommand(bob);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommandCopy \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"dez2003"},"content":" String expected \u003d AddStudentCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" private final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"ghos7ie"},"content":" ModelStubWithPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"ghos7ie"},"content":" return this.student.isSamePerson(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":" final ArrayList\u003cStudent\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"ghos7ie"},"content":" return personsAdded.stream().anyMatch(student::isSamePerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":" personsAdded.add(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":30,"SooYap":14,"-":171,"dez2003":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_AMY \u003d \"A0234567J\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_BOB \u003d \"A0224466H\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_ONE \u003d \"Team1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_TWO \u003d \"Team2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_THREE \u003d \"Team3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FOUR \u003d \"Team4\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FIVE \u003d \"Team5\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_ONE \u003d \"Group1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_TEN \u003d \"Group10\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_STUDENT_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-10-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"ghos7ie"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"SooYap":9,"-":102,"dez2003":10}},{"path":"src/test/java/seedu/address/logic/commands/DeleteStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.DeleteStudentCommandParser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"YANYAN-w"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":" * {@code DeleteStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public void execute_validStudentNumber_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" Student studentToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber studentNumber \u003d studentToDelete.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" String expectedMessage \u003d String.format(DeleteStudentCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" Messages.format(studentToDelete));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" expectedModel.deletePerson(studentToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" assertCommandSuccess(deleteStudentCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" public void execute_invalidStudentNumber_throwsCommandException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertParseFailure(new DeleteStudentCommandParser(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" \"B1234567\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno1 \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno2 \u003d new StudentNumber(\"A0123456C\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommand \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteSecondCommand \u003d new DeleteStudentCommand(sno2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommandCopy \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"YANYAN-w"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber targetNumber \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(targetNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" String expected \u003d DeleteStudentCommand.class.getCanonicalName() + \"{targetStudentNumber\u003d\" + targetNumber + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" assertEquals(expected, deleteStudentCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"YANYAN-w"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"YANYAN-w"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":6,"YANYAN-w":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" Student editedStudent \u003d new PersonBuilder().build(); //Amy Bee, amy@gmail.com, A01234567X","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" Student lastStudent \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(lastStudent, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student studentInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d new PersonBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"dez2003"},"content":" Student firstStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); //0","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"dez2003"},"content":" System.out.println(descriptor);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"dez2003"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor); //1","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" new EditPersonDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":2,"-":158,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", student number\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getStudentNumber().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":55,"dez2003":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":89}},{"path":"src/test/java/seedu/address/logic/parser/AddStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" private AddStudentCommandParser parser \u003d new AddStudentCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudentMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudentMultipleTags));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"dez2003"},"content":" // multiple student numbers","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"dez2003"},"content":" validExpectedPersonString + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"dez2003"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"dez2003"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"dez2003"},"content":" + VALID_TAG_FRIEND + STUDENT_NUMBER_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"dez2003"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":15,"-":102,"dez2003":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" AddStudentCommand command \u003d (AddStudentCommand) parser.parseCommand(PersonUtil.getAddCommand(student));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" assertEquals(new AddStudentCommand(student), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand command \u003d (DeleteStudentCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand.COMMAND_WORD + \" sno/\" + ALICE.getStudentNumber().toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" assertEquals(new DeleteStudentCommand(ALICE.getStudentNumber()), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(student).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"SooYap":5,"-":82,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/parser/DeleteStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class DeleteStudentCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private DeleteStudentCommandParser parser \u003d new DeleteStudentCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertParseSuccess(parser, \" sno/ \" + ALICE.getStudentNumber().toString(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" new DeleteStudentCommand(ALICE.getStudentNumber()));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"SooYap":8,"-":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Student} being edited,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"dez2003"},"content":" // AddStudentCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" + TAG_DESC_FRIEND + EMAIL_DESC_AMY + TAG_DESC_FRIEND + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"ghos7ie":18,"-":155,"dez2003":1}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"ghos7ie":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"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","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":142}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" assertTrue(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return groups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22,"SooYap":24,"-":88}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" assertFalse(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" modelManager.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" assertTrue(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":19,"-":131}},{"path":"src/test/java/seedu/address/model/group/GroupNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"public class GroupNameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new GroupName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GroupName(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e GroupName.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d new GroupName(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(new GroupName(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(groupName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(new GroupName(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":60}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class GroupTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" private static final Group FIRST_GROUP \u003d new Group(new GroupName(GROUP_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" private static final Group SECOND_GROUP \u003d new Group(new GroupName(TEAM_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public void isSameGroup() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.isSameGroup(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertTrue(SECOND_GROUP.isSameGroup(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.isSameGroup(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" Group firstGroupCopy \u003d new Group(FIRST_GROUP.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(firstGroupCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(5));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" String expected \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Group.class.getCanonicalName() + \"{groupname\u003d\" + FIRST_GROUP.getGroupName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" + \", students\u003d\" + FIRST_GROUP.getStudents() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, FIRST_GROUP.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertFalse(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void contains_groupInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertTrue(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void add_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.add(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void add_duplicateGroup_throwsDuplicateGroupException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.add(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullTargetGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(null, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullEditedGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setGroup_targetGroupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void remove_groupDoesNotExist_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.remove(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" public void remove_existingGroup_removesGroup() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.remove(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullUniqueGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup((Group) null, (Group) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void setGroup_listWithDuplicateGroup_throwsDuplicatePersonException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":93}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":81}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.JASON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"public class StudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e student.getTags().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(JASON.isSamePerson(JASON));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" // different student number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Student editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_AMY.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" // student name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" String expected \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", student number\u003d\" + ALICE.getStudentNumber()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" + \", group\u003d\" + ALICE.getGroup().orElse(\"\") + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":11,"SooYap":6,"-":74,"dez2003":4}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(null, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(ALICE, null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.setPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPerson(ALICE, BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((UniqueStudentList) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(expectedUniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPersons(listWithDuplicateStudents));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":60,"-":114}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String INVALID_NAME \u003d \"Te@m1\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(teamOne);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertEquals(teamOne, group.toModelType());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(INVALID_NAME, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d GroupName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(null, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, GroupName.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, invalidTags, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":66,"dez2003":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" public void readAddressBook_invalidGroupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidGroupAddressBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":5,"-":107}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.TypicalGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final Path DUPLICATE_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private static final Path INVALID_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Path TYPICAL_GROUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" public void toModelType_typicalGroupsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GROUPS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalGroups.getTypicalAddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SooYap":28,"-":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public AddressBookBuilder withPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code student}\u0027s details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptorBuilder(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" descriptor.setName(student.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" descriptor.setEmail(student.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" descriptor.setTags(student.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(student.getStudentNumber());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"dez2003"},"content":" public EditPersonDescriptorBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(new StudentNumber(studentNumber));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":66,"dez2003":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String DEFAULT_STUDENT_NUMBER \u003d \"A0123456X\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d new StudentNumber(DEFAULT_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Initializes the PersonBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" public PersonBuilder(Student studentToCopy) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d studentToCopy.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group \u003d studentToCopy.getGroup();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" * Sets the {@code String} group name of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" public PersonBuilder withGroup(String group) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.of(group);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" * Sets the {@code StudentNumber} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"dez2003"},"content":" public PersonBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" * Builds a {@code Student}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"dez2003"},"content":" * @returns A Student.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" public Student build() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" return group.isPresent()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"dez2003"},"content":" ? new Student(name, email, tags, studentNumber, group) : new Student(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":8,"-":66,"dez2003":14}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A utility class for Student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" return AddStudentCommand.COMMAND_WORD + \" \" + getPersonDetails(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static String getPersonDetails(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream().forEach(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NUMBER + student.getStudentNumber().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_STUDENT_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" descriptor.getStudentNumber().ifPresent(studentNumber -\u003e sb.append(PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" .append(studentNumber.value));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":42,"dez2003":10}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public static Student getPerson(Model model, Index index) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_TEN;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FIVE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FOUR;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_THREE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_TWO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Returns an {@code AddressBook} with all the typical persons and groups.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FIVE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FOUR)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_THREE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_TWO)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_TEN)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" return ab;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final Student ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .withEmail(\"alice@example.com\").withTags(\"friends\").withStudentNumber(\"A0111111J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public static final Student BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" .withEmail(\"johnd@example.com\").withTags(\"owesMoney\", \"friends\").withStudentNumber(\"A0222222H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" public static final Student CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" .withEmail(\"heinz@example.com\").withStudentNumber(\"A0333333M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static final Student DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" .withEmail(\"cornelia@example.com\").withTags(\"friends\").withStudentNumber(\"A0444444N\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static final Student ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" .withEmail(\"werner@example.com\").withStudentNumber(\"A0555555H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public static final Student FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" .withEmail(\"lydia@example.com\").withStudentNumber(\"A0666666J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final Student GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" .withEmail(\"anna@example.com\").withStudentNumber(\"A0888888M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final Student JASON \u003d new PersonBuilder().withName(\"Jason Derulo\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" .withEmail(\"jason@example.com\").withGroup(\"Group 1\").withStudentNumber(\"A0999999J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public static final Student HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" .withEmail(\"stefan@example.com\").withStudentNumber(\"A0969743K\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public static final Student IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .withEmail(\"hans@example.com\").withStudentNumber(\"A0887321S\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" public static final Student AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public static final Student BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" for (Student student : getTypicalPersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" ab.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" public static List\u003cStudent\u003e getTypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":11,"-":38,"dez2003":5}}] diff --git a/AY2425S1-CS2103-F12-2_tp_master/commits.json b/AY2425S1-CS2103-F12-2_tp_master/commits.json index 232b423a..874a18e1 100644 --- a/AY2425S1-CS2103-F12-2_tp_master/commits.json +++ b/AY2425S1-CS2103-F12-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ghos7ie":[{"date":"2024-09-23","commitResults":[{"hash":"c6b009918091e5ad464c3a88989dded90cd75451","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":96},"test-code":{"insertions":238,"deletions":28}}},{"hash":"88f2f7e4af142a82e26560893321a89f5c0672ae","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":6,"deletions":6}}},{"hash":"a7cf40025a0be1403c843cb5ef3b6d0c20c0fda1","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"47f9fd4285fba79851e5b48d2e0b3875d904e9ba","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":26},"test-code":{"insertions":4,"deletions":3}}},{"hash":"98fa304bbd47f091852baa84265764847bfab89c","isMergeCommit":false,"messageTitle":"Fix Test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":146}}},{"hash":"599b1f186240c7475ca668d0c736cf5e9fa50986","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd053ecb1681755db122354ce02b30fde917539b","isMergeCommit":false,"messageTitle":"remove commits from tutorial adding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":283},"test-code":{"insertions":164,"deletions":292}}},{"hash":"d67796536c59b42ec9719c708f16f6264524bee2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"10a85d8a82e62187490dce911a5d993c76af184f","isMergeCommit":true,"messageTitle":"Merge pull request #17 from YANYAN-w/branch-#14","messageBody":"Update yanyan\u0027s info in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"1e03f3b1fb7db8ca52f0f8d100ba6c9a6005c447","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":292,"deletions":86}}},{"hash":"2c2376767bc85693d356c5a85165dd19242e5447","isMergeCommit":false,"messageTitle":"Update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"79c124ba22b8dd44117759cce9e40c634e810c6d","isMergeCommit":false,"messageTitle":"Update readme.md and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"4168f63358d2df6359a706471157fb52d770b8a0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ghos7ie/update-readme","messageBody":"Update readme.md and dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9a6c24d18de65d9b2df2ca11b70394ec61baf364","isMergeCommit":false,"messageTitle":"Rename Person to Student all updated in main folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":448},"other":{"insertions":98,"deletions":115},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":184,"deletions":196}}},{"hash":"6bbd9d3b3b9e6600b5a8252c69ab4422a25f8f37","isMergeCommit":false,"messageTitle":"Update JUnit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":35},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":180,"deletions":547}}},{"hash":"adafe7c0765fc4d7cccc80d229c8e420e41e549f","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ghos7ie/rename-remove","messageBody":"Closes #36","fileTypesAndContributionMap":{}},{"hash":"a4a990c583d755b61ce99b6cbced1a619afda0f1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":4,"deletions":12}}},{"hash":"12046f083772617a4d22c5242a4615fb67ab4de0","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ghos7ie/rename-remove","messageBody":"Fix checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d345da05e2254b38577ac73a457ef8b8fcb5972e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from dez2003/add-student","messageBody":"Add Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"cae1dd577beae8facf6c3dfc284460e9f630dfa0","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SooYap/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]}],"SooYap":[{"date":"2024-10-02","commitResults":[{"hash":"d3e8e03953102ccf1df328f842428539774e3aee","isMergeCommit":false,"messageTitle":"Update Soo Yap information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"05d96815caf1fe22b2f8ab9d7676a12f6195795d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from dez2003/branch-update-aboutus","messageBody":"Update Desiree\u0027s details on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"a1d6e50bdde6cb4a287b42e56a41217063369e6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"8a4664bdb931714dec1cc8ccbe5a05cdcee9e0fe","isMergeCommit":false,"messageTitle":"Update photo name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ba059b91209b3ee6b594fd30ed6e2bad2d243bd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SooYap/Update-Photo","messageBody":"Update SooYap photo","fileTypesAndContributionMap":{}},{"hash":"f3c793fb8bfe5e4dc75a8896af6f0430ef16cbe3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1fdc01a090e0a3d01b91b61f11dc91dfb168e53","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ghos7ie/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"7a32368bad961eeefd60a49a80c31502763590c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56ea28fc3d7ad2401f3e5bea6c1f27df5b865b89","isMergeCommit":false,"messageTitle":"Update Developer Guide with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":3}}},{"hash":"8493dbec077685550acd8907381f5df0e102fb83","isMergeCommit":true,"messageTitle":"Merge pull request #31 from SooYap/Update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"086b955dc615c6a7d6244ac7604bf1ba16545d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f93d9778552398ed936f916dd0fdce5bdba8babd","isMergeCommit":false,"messageTitle":"Add optional group field in Student class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4}}},{"hash":"ecacda6aba7142b9e3fa19df4aeff9181f7d8bb9","isMergeCommit":false,"messageTitle":"Fix syntax errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13c16f4894462b5755e86dacb87f81cd30a90341","isMergeCommit":false,"messageTitle":"Add Javadoc comment to new Student constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"3bc340e59251630a928ddef20f8a93eb5b227a77","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SooYap/update-student-fields","messageBody":"Update student fields","fileTypesAndContributionMap":{}},{"hash":"3f03d57b69798a0500ab7e1bc6d2549f571234c8","isMergeCommit":false,"messageTitle":"Add minimal test cases for new optional group field in Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":18,"deletions":2}}},{"hash":"9337c6a5a92c8e6ad06730b71fff3358f9d8f911","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SooYap/update-student-fields","messageBody":"Add minimal test cases for new optional group field in Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"0b3c3f410d79693473b0be0ef18ec928c5eed342","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dad478a2f32e6566900639275b3dfb4d961e5e6","isMergeCommit":false,"messageTitle":"Add Group class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":5},"test-code":{"insertions":7,"deletions":3}}},{"hash":"8279f6350d0fdebe57b41a9adf61cf895713b410","isMergeCommit":false,"messageTitle":"Include a UniqueGroupList, AddGroupCommand and AddGroupCommandParser class, and update the relevant fields in ModelManager, ReadOnlyAddressBook, CliSyntax, ParserUtil, and Messages classes to support the new function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":398,"deletions":5},"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b9e1e15581bbd64d87ac9b1503ea10d36b59e751","isMergeCommit":false,"messageTitle":"Correct checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"d58892412642d2de1493749c67bed311bd810b07","isMergeCommit":false,"messageTitle":"Update test cases to cover the newly added fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":1}}},{"hash":"3f26715ce96b116a99afaa91735ccb5123c96f02","isMergeCommit":false,"messageTitle":"Correct test checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"f3dd881071dee4c669969732b75b26764f80fc1e","isMergeCommit":false,"messageTitle":"Implement storage saving functionality for adding groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":3}}},{"hash":"9c0fabac77ca948c477e4c6dda7483877650b6d3","isMergeCommit":false,"messageTitle":"Fix error message which displays upon user entering an invalid group name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7}}},{"hash":"9394f64353154b81d858311cf0897dcd759bbb70","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":421,"deletions":0}}},{"hash":"80814164b076741d1d0c4b40c88d27fe649fceaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"438dc11a07fa9b0993d49574fc10007f4abd7bf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n","fileTypesAndContributionMap":{}},{"hash":"7d0a0886c8a39544e0d50d0d1ecf285cab98c3e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from SooYap/master","messageBody":"Add Student and Add Group Functionality","fileTypesAndContributionMap":{}},{"hash":"4ae35a31cf3b65762c3e6025aee99e9e573fe372","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-student","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fed9d9d637af7565a8062429c51bc67377191eae","isMergeCommit":true,"messageTitle":"Merge pull request #49 from YANYAN-w/branch-delete-student","messageBody":"Refactored DeleteCommand to DeleteStudentCommand","fileTypesAndContributionMap":{}},{"hash":"bacf4fba1d6a4ba1b66386d77fb4e6c696efc7c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60698b9cfabee2b27e6e99943696fcc329badc88","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":32}}}]},{"date":"2024-10-11","commitResults":[{"hash":"bd6aaaebad06b381aaa107c03b5b9bf4956d296b","isMergeCommit":false,"messageTitle":"Fix JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":120},"other":{"insertions":8,"deletions":7},"test-code":{"insertions":20,"deletions":139}}},{"hash":"c1a947915ae8e986c1b731c2979f6f997b6ddefc","isMergeCommit":true,"messageTitle":"Merge pull request #53 from SooYap/remove-current-bugs","messageBody":"Remove current bugs","fileTypesAndContributionMap":{}},{"hash":"c5ea404182fefb8b740fdcca6b71f241662c035f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"882d49fd9e7a0acd4e9899d12e4abaac68ce7e9b","isMergeCommit":false,"messageTitle":"Add and update more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":52,"deletions":13}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b57bbc5d044907a1771d52f308b229400f1ae1f","isMergeCommit":false,"messageTitle":"Update JUnit test cases and fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":154,"deletions":10}}},{"hash":"d8894bd12b37c21020171f0045958ce3f2861ca1","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f23d8880c0d5f397da149874d424e51d6b62af42","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SooYap/update-more-test-cases","messageBody":"Update more test cases","fileTypesAndContributionMap":{}},{"hash":"a652975cb9ca4c675444e592120a8e75b5ee3408","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"78cebfbff2eea62f41a32ca8077287acbe19cfeb","isMergeCommit":false,"messageTitle":"Create placeholder element to display group list and create State class to reflect different GUI display states","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":13},"other":{"insertions":4,"deletions":4}}}]}],"YANYAN-w":[{"date":"2024-10-02","commitResults":[{"hash":"f02fe3b9de4b9ab7e6f73d58fa17286a11a6cde1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"fa6e8ff4f450ce88aaa6fcc798d9046273ef2303","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7a45d6c21a38d1f44c595d5c2451f25506ed9778","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-lewis-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53f4d21ace3136fee65e764e3746a3d8c1796a38","isMergeCommit":true,"messageTitle":"Merge pull request #18 from ghos7ie/update-lewis-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bd338ec5ace4e3d80a50c54181fdf481a72e527c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"9116dedd5e4ff95ed3aa78f6572f9102a1d0887c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"5b59b1f35b0cb35df6ff182a50b778abf89a6927","isMergeCommit":true,"messageTitle":"Merge pull request #25 from YANYAN-w/branch-A","messageBody":"Update README and Ui image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"7b08e60b9b674e8360c1521962ee25c8643769a5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"7fcccd8919051b2d02eaf64afbec9a8338a0d962","isMergeCommit":true,"messageTitle":"Merge pull request #28 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"e805953fc4b098faa77b871a482c51c2db5d111f","isMergeCommit":false,"messageTitle":"refactored DeleteCommand to DeleteStudentCommand, updated the test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":258,"deletions":27},"test-code":{"insertions":98,"deletions":4}}}]},{"date":"2024-10-10","commitResults":[{"hash":"14c9b89793a2054cd6251371675cccd0ac9ea720","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027 of https://github.com/SooYap/tp into SooYap-create-group-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81597ee6c0a131e58867812a9dcef96f02cc8137","isMergeCommit":true,"messageTitle":"Merge branch \u0027SooYap-create-group-class\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}],"dez2003":[{"date":"2024-10-02","commitResults":[{"hash":"cef679ad04a1d10e3d0863011036ce737c5c8799","isMergeCommit":false,"messageTitle":"Update Desiree\u0027s details on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":15}}},{"hash":"ddf4bc2806d8c4627280b0e07bd4378734af57a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f9f87d4462c06013b2831c09c3fadc80a95ac2b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from SooYap/Update-AboutUs","messageBody":"Update Soo Yap information","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"3252f23ad23eea007cd78c6b393f0b42ce693a6d","isMergeCommit":false,"messageTitle":"Update site-wide settings using MarkBind","messageBody":"Renamed AB-3 with T_Assistant across all site pages, and removed\nplaceholder in AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":17}}},{"hash":"153915705ae5b94ab7738efb0c5c1d17b6b957ae","isMergeCommit":true,"messageTitle":"Merge pull request #32 from dez2003/branch-B","messageBody":"Update site-wide settings using MarkBind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"682f5c7ab6bea03e164621ec08b10136e98572e1","isMergeCommit":false,"messageTitle":"Add studentNumber field to Student class","messageBody":"The Student class doesn\u0027t have a student number field, which is\nconsidered important information to have for tutors to uniquely\nidentify each student.\n\nLet\u0027s add a student number field and update other classes\nwhere necessary.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":6},"test-code":{"insertions":14,"deletions":1}}},{"hash":"cbce0f810453ec0ddc3557d0af6db977e7b4c666","isMergeCommit":false,"messageTitle":"Update Parser and AddCommand and its related classes","messageBody":"The parser and add command doesn\u0027t take into account the new argument\nstudent number when adding a new student to the system since it was a\nnew field added for Student class.\n\nLet\u0027s\n* add the student number prefix and rename the student name prefix\n* add the argument student number to AddCommand\n* implement the prefixes into the parser, command, and test classes\n* rename the command word to \"add_student\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":22},"test-code":{"insertions":39,"deletions":22}}},{"hash":"3857e0df83268a63b54fc15bbb288750f501a05d","isMergeCommit":false,"messageTitle":"Modify GUI to show student number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10},"test-code":{"insertions":6,"deletions":7}}},{"hash":"c7cb20619af3ca4d58fe8824be5ff5c4bbb364d2","isMergeCommit":false,"messageTitle":"Refactor AddCommand class to AddStudentCommand","messageBody":"The class name AddCommand is too general since there\u0027ll be another\nfeature that will be adding groups.\n\nTo make the command more specific and easier to understand, let\u0027s\nrename the class name to AddStudentCommand and rename other related\nclass\u0027 names.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":38,"deletions":38},"test-code":{"insertions":8,"deletions":8}}},{"hash":"016be2c20c514ed4812e66d29d9dea9d3eaaeef8","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":2,"deletions":1}}},{"hash":"28e2c5b69856aa5e51a51930440170c2adeec41e","isMergeCommit":false,"messageTitle":"Add JavaDoc comment to StudentNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"cfdaba6eb75d19c6033f2fbab8b7a6b4a956b76c","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"2b9de41f0ce9384333acf6a714b2e8badcb48d5b","isMergeCommit":false,"messageTitle":"Update code to pass all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":52,"deletions":31}}}]}]},"authorFileTypeContributionMap":{"ghos7ie":{"docs":325,"functional-code":251,"test-code":278},"SooYap":{"docs":134,"functional-code":991,"test-code":670},"YANYAN-w":{"docs":7,"functional-code":140,"test-code":87},"dez2003":{"docs":11,"functional-code":139,"test-code":116}},"authorContributionVariance":{"ghos7ie":246492.28,"SooYap":42775.47,"YANYAN-w":6195.629,"dez2003":8486.515},"authorDisplayNameMap":{"ghos7ie":"CS2103-F12-2 LYE ..EWIS","SooYap":"CS2103-F12-2 TAN .. YAP","YANYAN-w":"CS2103-F12-2 WANG..NYAN","dez2003":"CS2103-F12-2 SNG ..IREE"}} +{"authorDailyContributionsMap":{"ghos7ie":[{"date":"2024-09-23","commitResults":[{"hash":"c6b009918091e5ad464c3a88989dded90cd75451","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":96},"test-code":{"insertions":238,"deletions":28}}},{"hash":"88f2f7e4af142a82e26560893321a89f5c0672ae","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":6,"deletions":6}}},{"hash":"a7cf40025a0be1403c843cb5ef3b6d0c20c0fda1","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"47f9fd4285fba79851e5b48d2e0b3875d904e9ba","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":26},"test-code":{"insertions":4,"deletions":3}}},{"hash":"98fa304bbd47f091852baa84265764847bfab89c","isMergeCommit":false,"messageTitle":"Fix Test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":146}}},{"hash":"599b1f186240c7475ca668d0c736cf5e9fa50986","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd053ecb1681755db122354ce02b30fde917539b","isMergeCommit":false,"messageTitle":"remove commits from tutorial adding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":283},"test-code":{"insertions":164,"deletions":292}}},{"hash":"d67796536c59b42ec9719c708f16f6264524bee2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"10a85d8a82e62187490dce911a5d993c76af184f","isMergeCommit":true,"messageTitle":"Merge pull request #17 from YANYAN-w/branch-#14","messageBody":"Update yanyan\u0027s info in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"1e03f3b1fb7db8ca52f0f8d100ba6c9a6005c447","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":292,"deletions":86}}},{"hash":"2c2376767bc85693d356c5a85165dd19242e5447","isMergeCommit":false,"messageTitle":"Update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"79c124ba22b8dd44117759cce9e40c634e810c6d","isMergeCommit":false,"messageTitle":"Update readme.md and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"4168f63358d2df6359a706471157fb52d770b8a0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ghos7ie/update-readme","messageBody":"Update readme.md and dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9a6c24d18de65d9b2df2ca11b70394ec61baf364","isMergeCommit":false,"messageTitle":"Rename Person to Student all updated in main folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":448},"other":{"insertions":98,"deletions":115},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":184,"deletions":196}}},{"hash":"6bbd9d3b3b9e6600b5a8252c69ab4422a25f8f37","isMergeCommit":false,"messageTitle":"Update JUnit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":35},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":180,"deletions":547}}},{"hash":"adafe7c0765fc4d7cccc80d229c8e420e41e549f","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ghos7ie/rename-remove","messageBody":"Closes #36","fileTypesAndContributionMap":{}},{"hash":"a4a990c583d755b61ce99b6cbced1a619afda0f1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":4,"deletions":12}}},{"hash":"12046f083772617a4d22c5242a4615fb67ab4de0","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ghos7ie/rename-remove","messageBody":"Fix checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d345da05e2254b38577ac73a457ef8b8fcb5972e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from dez2003/add-student","messageBody":"Add Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"c2716fbac10447c61c8bb957d0c3ea64b3fc95d8","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"Task package is kept in model, instead of group package to\naccommodate for future expansion, where students can have individual\ntasks.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":1}}},{"hash":"cae1dd577beae8facf6c3dfc284460e9f630dfa0","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SooYap/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}},{"hash":"b9411b059d2732f68a4d695a6775034088372100","isMergeCommit":false,"messageTitle":"Remove List command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"test-code":{"insertions":5,"deletions":52}}},{"hash":"402e29c2e2e1127496482f47fea229a7feccd2c3","isMergeCommit":false,"messageTitle":"Use strict resolver style to prevent parsing of invalid dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}}]}],"SooYap":[{"date":"2024-10-02","commitResults":[{"hash":"d3e8e03953102ccf1df328f842428539774e3aee","isMergeCommit":false,"messageTitle":"Update Soo Yap information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"05d96815caf1fe22b2f8ab9d7676a12f6195795d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from dez2003/branch-update-aboutus","messageBody":"Update Desiree\u0027s details on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"a1d6e50bdde6cb4a287b42e56a41217063369e6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"8a4664bdb931714dec1cc8ccbe5a05cdcee9e0fe","isMergeCommit":false,"messageTitle":"Update photo name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ba059b91209b3ee6b594fd30ed6e2bad2d243bd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SooYap/Update-Photo","messageBody":"Update SooYap photo","fileTypesAndContributionMap":{}},{"hash":"f3c793fb8bfe5e4dc75a8896af6f0430ef16cbe3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1fdc01a090e0a3d01b91b61f11dc91dfb168e53","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ghos7ie/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"7a32368bad961eeefd60a49a80c31502763590c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56ea28fc3d7ad2401f3e5bea6c1f27df5b865b89","isMergeCommit":false,"messageTitle":"Update Developer Guide with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":3}}},{"hash":"8493dbec077685550acd8907381f5df0e102fb83","isMergeCommit":true,"messageTitle":"Merge pull request #31 from SooYap/Update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"086b955dc615c6a7d6244ac7604bf1ba16545d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f93d9778552398ed936f916dd0fdce5bdba8babd","isMergeCommit":false,"messageTitle":"Add optional group field in Student class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4}}},{"hash":"ecacda6aba7142b9e3fa19df4aeff9181f7d8bb9","isMergeCommit":false,"messageTitle":"Fix syntax errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13c16f4894462b5755e86dacb87f81cd30a90341","isMergeCommit":false,"messageTitle":"Add Javadoc comment to new Student constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"3bc340e59251630a928ddef20f8a93eb5b227a77","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SooYap/update-student-fields","messageBody":"Update student fields","fileTypesAndContributionMap":{}},{"hash":"3f03d57b69798a0500ab7e1bc6d2549f571234c8","isMergeCommit":false,"messageTitle":"Add minimal test cases for new optional group field in Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":18,"deletions":2}}},{"hash":"9337c6a5a92c8e6ad06730b71fff3358f9d8f911","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SooYap/update-student-fields","messageBody":"Add minimal test cases for new optional group field in Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"0b3c3f410d79693473b0be0ef18ec928c5eed342","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dad478a2f32e6566900639275b3dfb4d961e5e6","isMergeCommit":false,"messageTitle":"Add Group class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":5},"test-code":{"insertions":7,"deletions":3}}},{"hash":"8279f6350d0fdebe57b41a9adf61cf895713b410","isMergeCommit":false,"messageTitle":"Include a UniqueGroupList, AddGroupCommand and AddGroupCommandParser class, and update the relevant fields in ModelManager, ReadOnlyAddressBook, CliSyntax, ParserUtil, and Messages classes to support the new function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":398,"deletions":5},"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b9e1e15581bbd64d87ac9b1503ea10d36b59e751","isMergeCommit":false,"messageTitle":"Correct checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"d58892412642d2de1493749c67bed311bd810b07","isMergeCommit":false,"messageTitle":"Update test cases to cover the newly added fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":1}}},{"hash":"3f26715ce96b116a99afaa91735ccb5123c96f02","isMergeCommit":false,"messageTitle":"Correct test checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"f3dd881071dee4c669969732b75b26764f80fc1e","isMergeCommit":false,"messageTitle":"Implement storage saving functionality for adding groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":3}}},{"hash":"9c0fabac77ca948c477e4c6dda7483877650b6d3","isMergeCommit":false,"messageTitle":"Fix error message which displays upon user entering an invalid group name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7}}},{"hash":"9394f64353154b81d858311cf0897dcd759bbb70","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":421,"deletions":0}}},{"hash":"80814164b076741d1d0c4b40c88d27fe649fceaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"438dc11a07fa9b0993d49574fc10007f4abd7bf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n","fileTypesAndContributionMap":{}},{"hash":"7d0a0886c8a39544e0d50d0d1ecf285cab98c3e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from SooYap/master","messageBody":"Add Student and Add Group Functionality","fileTypesAndContributionMap":{}},{"hash":"4ae35a31cf3b65762c3e6025aee99e9e573fe372","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-student","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fed9d9d637af7565a8062429c51bc67377191eae","isMergeCommit":true,"messageTitle":"Merge pull request #49 from YANYAN-w/branch-delete-student","messageBody":"Refactored DeleteCommand to DeleteStudentCommand","fileTypesAndContributionMap":{}},{"hash":"bacf4fba1d6a4ba1b66386d77fb4e6c696efc7c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60698b9cfabee2b27e6e99943696fcc329badc88","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":32}}}]},{"date":"2024-10-11","commitResults":[{"hash":"bd6aaaebad06b381aaa107c03b5b9bf4956d296b","isMergeCommit":false,"messageTitle":"Fix JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":120},"other":{"insertions":8,"deletions":7},"test-code":{"insertions":20,"deletions":139}}},{"hash":"c1a947915ae8e986c1b731c2979f6f997b6ddefc","isMergeCommit":true,"messageTitle":"Merge pull request #53 from SooYap/remove-current-bugs","messageBody":"Remove current bugs","fileTypesAndContributionMap":{}},{"hash":"c5ea404182fefb8b740fdcca6b71f241662c035f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"882d49fd9e7a0acd4e9899d12e4abaac68ce7e9b","isMergeCommit":false,"messageTitle":"Add and update more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":52,"deletions":13}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b57bbc5d044907a1771d52f308b229400f1ae1f","isMergeCommit":false,"messageTitle":"Update JUnit test cases and fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":154,"deletions":10}}},{"hash":"d8894bd12b37c21020171f0045958ce3f2861ca1","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f23d8880c0d5f397da149874d424e51d6b62af42","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SooYap/update-more-test-cases","messageBody":"Update more test cases","fileTypesAndContributionMap":{}},{"hash":"a652975cb9ca4c675444e592120a8e75b5ee3408","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"78cebfbff2eea62f41a32ca8077287acbe19cfeb","isMergeCommit":false,"messageTitle":"Create placeholder element to display group list and create State class to reflect different GUI display states","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":13},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-13","commitResults":[{"hash":"5f1e1152f1b0d18a241b2d31b0561833c89c44d9","isMergeCommit":false,"messageTitle":"Update GUI code to accomodate viewing of groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":15},"other":{"insertions":6,"deletions":1}}},{"hash":"fe452cc3d97bc3c02bbd22fe0cb2312da5b0ed7f","isMergeCommit":true,"messageTitle":"Merge pull request #66 from SooYap/update-gui","messageBody":"Update GUI code to accomodate viewing of groups","fileTypesAndContributionMap":{}},{"hash":"db99ee39e041313a74af5e0367b9674f72234d19","isMergeCommit":false,"messageTitle":"Remove ListCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":28},"test-code":{"insertions":0,"deletions":25}}},{"hash":"13a542e06b24a16af5b378d9ffc381d2a91e134a","isMergeCommit":false,"messageTitle":"Change command for listing students","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"549d1e1589977a881d4263cc3d1c24246d10a9fc","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SooYap/update-gui","messageBody":"Update gui","fileTypesAndContributionMap":{}},{"hash":"8936d2615b016e5f8c3677cf5ef4297675d91638","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f8c64fee3b048b209a728aa52218b1ee8b5a7894","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ghos7ie/task-class","messageBody":"Add Task class","fileTypesAndContributionMap":{}},{"hash":"800af6dfd41bf73b13a58f21b5e6e0adecaeaa47","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ef178661a412fe862f9c528de85b81e856a2c9ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027remove-list-command\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/ListCommandTest.java\n","fileTypesAndContributionMap":{}},{"hash":"7565721ba8a47a1ea2bbe3ee65daa5cf47520562","isMergeCommit":true,"messageTitle":"Merge pull request #68 from SooYap/update-gui-list-tasks","messageBody":"Update gui list tasks","fileTypesAndContributionMap":{}}]}],"YANYAN-w":[{"date":"2024-10-02","commitResults":[{"hash":"f02fe3b9de4b9ab7e6f73d58fa17286a11a6cde1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"fa6e8ff4f450ce88aaa6fcc798d9046273ef2303","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7a45d6c21a38d1f44c595d5c2451f25506ed9778","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-lewis-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53f4d21ace3136fee65e764e3746a3d8c1796a38","isMergeCommit":true,"messageTitle":"Merge pull request #18 from ghos7ie/update-lewis-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bd338ec5ace4e3d80a50c54181fdf481a72e527c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"9116dedd5e4ff95ed3aa78f6572f9102a1d0887c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"5b59b1f35b0cb35df6ff182a50b778abf89a6927","isMergeCommit":true,"messageTitle":"Merge pull request #25 from YANYAN-w/branch-A","messageBody":"Update README and Ui image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"7b08e60b9b674e8360c1521962ee25c8643769a5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"7fcccd8919051b2d02eaf64afbec9a8338a0d962","isMergeCommit":true,"messageTitle":"Merge pull request #28 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"e805953fc4b098faa77b871a482c51c2db5d111f","isMergeCommit":false,"messageTitle":"refactored DeleteCommand to DeleteStudentCommand, updated the test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":258,"deletions":27},"test-code":{"insertions":98,"deletions":4}}}]},{"date":"2024-10-10","commitResults":[{"hash":"14c9b89793a2054cd6251371675cccd0ac9ea720","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027 of https://github.com/SooYap/tp into SooYap-create-group-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81597ee6c0a131e58867812a9dcef96f02cc8137","isMergeCommit":true,"messageTitle":"Merge branch \u0027SooYap-create-group-class\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}],"dez2003":[{"date":"2024-10-02","commitResults":[{"hash":"cef679ad04a1d10e3d0863011036ce737c5c8799","isMergeCommit":false,"messageTitle":"Update Desiree\u0027s details on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":15}}},{"hash":"ddf4bc2806d8c4627280b0e07bd4378734af57a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f9f87d4462c06013b2831c09c3fadc80a95ac2b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from SooYap/Update-AboutUs","messageBody":"Update Soo Yap information","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"3252f23ad23eea007cd78c6b393f0b42ce693a6d","isMergeCommit":false,"messageTitle":"Update site-wide settings using MarkBind","messageBody":"Renamed AB-3 with T_Assistant across all site pages, and removed\nplaceholder in AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":17}}},{"hash":"153915705ae5b94ab7738efb0c5c1d17b6b957ae","isMergeCommit":true,"messageTitle":"Merge pull request #32 from dez2003/branch-B","messageBody":"Update site-wide settings using MarkBind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"682f5c7ab6bea03e164621ec08b10136e98572e1","isMergeCommit":false,"messageTitle":"Add studentNumber field to Student class","messageBody":"The Student class doesn\u0027t have a student number field, which is\nconsidered important information to have for tutors to uniquely\nidentify each student.\n\nLet\u0027s add a student number field and update other classes\nwhere necessary.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":6},"test-code":{"insertions":14,"deletions":1}}},{"hash":"cbce0f810453ec0ddc3557d0af6db977e7b4c666","isMergeCommit":false,"messageTitle":"Update Parser and AddCommand and its related classes","messageBody":"The parser and add command doesn\u0027t take into account the new argument\nstudent number when adding a new student to the system since it was a\nnew field added for Student class.\n\nLet\u0027s\n* add the student number prefix and rename the student name prefix\n* add the argument student number to AddCommand\n* implement the prefixes into the parser, command, and test classes\n* rename the command word to \"add_student\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":22},"test-code":{"insertions":39,"deletions":22}}},{"hash":"3857e0df83268a63b54fc15bbb288750f501a05d","isMergeCommit":false,"messageTitle":"Modify GUI to show student number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10},"test-code":{"insertions":6,"deletions":7}}},{"hash":"c7cb20619af3ca4d58fe8824be5ff5c4bbb364d2","isMergeCommit":false,"messageTitle":"Refactor AddCommand class to AddStudentCommand","messageBody":"The class name AddCommand is too general since there\u0027ll be another\nfeature that will be adding groups.\n\nTo make the command more specific and easier to understand, let\u0027s\nrename the class name to AddStudentCommand and rename other related\nclass\u0027 names.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":38,"deletions":38},"test-code":{"insertions":8,"deletions":8}}},{"hash":"016be2c20c514ed4812e66d29d9dea9d3eaaeef8","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":2,"deletions":1}}},{"hash":"28e2c5b69856aa5e51a51930440170c2adeec41e","isMergeCommit":false,"messageTitle":"Add JavaDoc comment to StudentNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"cfdaba6eb75d19c6033f2fbab8b7a6b4a956b76c","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"2b9de41f0ce9384333acf6a714b2e8badcb48d5b","isMergeCommit":false,"messageTitle":"Update code to pass all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":52,"deletions":31}}}]}]},"authorFileTypeContributionMap":{"ghos7ie":{"docs":325,"functional-code":499,"test-code":278},"SooYap":{"docs":134,"functional-code":1179,"test-code":670},"YANYAN-w":{"docs":7,"functional-code":140,"test-code":87},"dez2003":{"docs":11,"functional-code":139,"test-code":116}},"authorContributionVariance":{"ghos7ie":237056.31,"SooYap":42073.4,"YANYAN-w":5950.9844,"dez2003":8160.0835},"authorDisplayNameMap":{"ghos7ie":"CS2103-F12-2 LYE ..EWIS","SooYap":"CS2103-F12-2 TAN .. YAP","YANYAN-w":"CS2103-F12-2 WANG..NYAN","dez2003":"CS2103-F12-2 SNG ..IREE"}} diff --git a/AY2425S1-CS2103T-F13-2_tp_master/authorship.json b/AY2425S1-CS2103T-F13-2_tp_master/authorship.json index 1ded9a53..e3893e1d 100644 --- a/AY2425S1-CS2103T-F13-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F13-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Team: CS2103T-F13-2","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"* This is **our team\u0027s project for CS2103T Software Engineering (SE) Module**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. Our goals are as follows:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":" - Write code of **good coding quality** that **follows SOLID principles**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":" - Provide **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" - Develop code base with **good software engineering practices and workflows**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"* Our application is named `Address Book Command Line Interface` (`ABCLI` for short) as it is an address book that is operated primarily through a command line interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* We have tailored our application specifically for Real Estate Agents","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* For the detailed documentation of this project, see the **[ABCLI Product Website](https://ay2425s1-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"### Ng Zi Xin","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"\u003cimg src\u003d\"images/ngzixin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"[[github](https://github.com/ngzixin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"[[portfolio](team/ngzixin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* Role: Code Quality Checker","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"* Responsibilities: Check Code Quality","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"### Chin Yi Ling","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"\u003cimg src\u003d\"images/ylchin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"[[github](https://github.com/ylchin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"[[portfolio](team/ylchin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":"* Responsibilities: Project deliverables","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":"* ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Solomon0519"},"content":"### Ng Eswen","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Solomon0519"},"content":"\u003cimg src\u003d\"images/solomon0519.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Solomon0519"},"content":"[[github](https://github.com/Solomon0519)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Solomon0519"},"content":"[[portfolio](team/Eswen.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Solomon0519"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Solomon0519"},"content":"* Responsiblities: Check proper documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"### Kenny Lewi","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":"\u003cimg src\u003d\"images/kennylewi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"[[github](http://github.com/kennylewi)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"[[portfolio](team/kennylewi.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":"* Role: Testing","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"CreditableX"},"content":"### Yiow Meng Loong","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"CreditableX"},"content":"\u003cimg src\u003d\"images/creditablex.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"CreditableX"},"content":"[[github](http://github.com/creditablex)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"CreditableX"},"content":"[[portfolio](team/creditablex.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"CreditableX"},"content":"* Responsibilities: Lead Team","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":6,"CreditableX":6,"KennyLewi":6,"ylchin":6,"NgZiXin":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"ylchin"},"content":"A real estate agent who...","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"ylchin"},"content":"* has a need to manage a significant number of client contacts","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"ylchin"},"content":"* frequently needs to track client information, such as property preferences, deal statuses, and meetings","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"ylchin"},"content":"* hopes to ensure smooth communication with clients by sending updates on listings, reminders for follow-ups, and managing appointments","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"ylchin"},"content":"**Value proposition**: Using CLI to streamline management of client contacts and communications will make it more efficient than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"ylchin"},"content":"|--------|---------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | add a new client | keep track of their information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | delete a client | remove entries that I no longer need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | find a client by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | categorize clients as buyers, sellers and renters | easily filter and manage different client types |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | filter contacts by tags (e.g. `Meeting Time`, `High` or `Low Priority`) | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | send bulk emails to groups of clients | inform them of new property listing |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | view my contacts using commands | track them better |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | collect the name, contact number and email of my clients | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | have a meeting schedule | keep track of future meetings |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"ylchin"},"content":"| `* * * ` | user | tag clients with labels like `high priority` or `first time buyer` | prioritise my outreach efforts |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | archive old client contacts | my address book remains up-to-date without deleting past information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | mark clients as `inactive` or `closed deal` | focus on active prospects |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"ylchin"},"content":"| `* *` | user | store notes about clients\u0027 property preferences | tailor property recommendations to their needs |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set reminders for client follow-ups | don\u0027t miss important communications |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"ylchin"},"content":"| `* *` | user | group clients by location preferences | easily send property updates |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track status of property deals for each client (e.g. `interested`, `offer made`, `contract signed`) | stay organised |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | log the last interaction date with the client | maintain regular communication |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | export my contact list to Excel or CSV | share it with colleagues or for reporting purposes |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | import contacts from my phone or other databases | quickly build by address book |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"ylchin"},"content":"| `* *` | user | add notes to client interactions | capture important details discussed in meetings or phone calls |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set a follow-up frequency for each client | stay in regular contact |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track a client\u0027s viewing history | know which client have been shown to which property |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"ylchin"},"content":"| `* *` | user | filter clients by their buying timelines (e.g. immediate, next 5 months) | focus on urgent leads |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set up reminders for key seller-related milestones (e.g. contract expiration, price reduction discussions) | never miss an important deadline |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track client communication preferences | engage them through their preferred channels |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ylchin"},"content":"| `* *` | user | generate a visual itmeline of a property\u0027s selling process | easily communicate progress to sellers |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"ylchin"},"content":"| `* *` | user | collect budget preference, neighbourhood preference and property of my buyer and seller | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"ylchin"},"content":"| `*` | user | receive notifications when it\u0027s time to follow up with a client | not forget |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"ylchin"},"content":"| `*` | user | assign a lead source to each client, e.g. referral, open house, website | know where my business is coming from |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"ylchin"},"content":"| `*` | real estate agent | schedule and track open house events | ensure smooth operations and follow up with attendees |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"ylchin"},"content":"| `*` | user | monitor competing listings in the same area | adjust pricing and marketing strategies accordingly |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"ylchin"},"content":"| `*` | user | track commission details for each property sale | keep accurate financial records |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"ylchin"},"content":"| `*` | user | generate reports on the number of leads genrated per listing | show sellers the interest their property is receiving |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"ylchin"},"content":"| `*` | user | manage and log referral partner interactions (e.g. contractors, photographers) | maintain strong professional relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"ylchin"},"content":"| `*` | user | send property performance updates to sellers (e.g. number of views, showings) | keep them informed and engaged |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"ylchin"},"content":"| `*` | user | track which clients were referre by past clients | send personalised appreciation messages and foster long-term relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Solomon0519"},"content":"(For all use cases below, the **System** is `ABCLI` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 1: Adding a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the contact","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Solomon0519"},"content":"- Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Solomon0519"},"content":"* 1a. The contact format is invalid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Solomon0519"},"content":" * 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Solomon0519"},"content":" * Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 2: Deleting a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Solomon0519"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Solomon0519"},"content":"3. User requests to delete a specific contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI deletes the contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Solomon0519"},"content":"5. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Solomon0519"},"content":"6. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Solomon0519"},"content":"- 3a. The index for deletion is not a positive whole number","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Solomon0519"},"content":" - 3a1. ABCLI shows an error message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Solomon0519"},"content":"- 3b. The index for deletion is out of range","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Solomon0519"},"content":" - 3b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 3: Adding a meetup\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of meetups on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Solomon0519"},"content":"- 1a. The command is missing a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Solomon0519"},"content":" - 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Solomon0519"},"content":"- 1b. The command is missing a flag","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Solomon0519"},"content":" - 1b1 ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 4: Viewing contacts\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Solomon0519"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Solomon0519"},"content":"- 1a. Viewing buyer and seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Solomon0519"},"content":" - 1a1. User requests to view buyer contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Solomon0519"},"content":" - 1a2. ABCLI shows the list of contacts of buyers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Solomon0519"},"content":" - 1a3. User requests to view seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Solomon0519"},"content":" - 1a4. ABCLI shows the list of contacts of sellers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Solomon0519"},"content":"- 1b. t/ flag has invalid contact type","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Solomon0519"},"content":" - 1b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":415,"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","isFullCredit":false},{"lineNumber":416,"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","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"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","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"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","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"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","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"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","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"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","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"CreditableX"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be a result of evolving/enhancing/morphing the given codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be targeting users who can type fast and prefer typing over other means of input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be for a single user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"CreditableX"},"content":"1. ABCLI needs to be developed in a breadth-first incremental manner over the project duration.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"CreditableX"},"content":"1. ABCLI\u0027s data should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"CreditableX"},"content":"1. ABCLI cannot use a DBMS to store data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should follow the Object-oriented paradigm primarily.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on the Windows, Linux, and OS-X platforms.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on a computer that has version 17 of Java.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should not depend on your own remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"CreditableX"},"content":"1. The use of third-party frameworks/libraries/services is allowed but only if they are free, open-source, and have permissive license terms and do not require any installation by users and do not violate other constraints.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"CreditableX"},"content":"1. The GUI should work well for standard screen resolutions 1920x1080 and higher and for screen scales 100% and 125%. In addition, the GUI should be usable for resolutions 1280x720 and higher, and for screen scales 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"CreditableX"},"content":"1. ABCLI has to be packaged into a single JAR file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"CreditableX"},"content":"### Glossary","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"CreditableX"},"content":"1. **ABCLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"CreditableX"},"content":"Our product name.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"CreditableX"},"content":"1. **CLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"CreditableX"},"content":"The command line interface is a way to interact with a computer by typing text commands instead of using a mouse to click on icons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"CreditableX"},"content":"1. **Command Line** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"CreditableX"},"content":"A text box where you enter commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"CreditableX"},"content":"1. **Flag** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"CreditableX"},"content":"In our context, a flag is something preceded by a /, but is not the initial command. e.g in `add n/NAME`, `n/` is a flag but `add` is not.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"CreditableX"},"content":"1. **GUI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"CreditableX"},"content":"Graphical user interface. The screen you see when opening the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"CreditableX"},"content":"1. [**Java**](https://www.java.com/en/) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"CreditableX"},"content":"A programming language.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"CreditableX"},"content":"1. **Parameter** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"CreditableX"},"content":"A value that you need to provide for the command to work. e.g in `add n/NAME`, `NAME` is a parameter.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"CreditableX"},"content":"1. [**Windows**](https://en.wikipedia.org/wiki/Microsoft_Windows) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"CreditableX"},"content":"An operating system.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Solomon0519":72,"CreditableX":53,"ylchin":42,"NgZiXin":1,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"Address Book Command Line Interface (ABCLI) is a **desktop app made specially for Real Estate Agents to manage contacts and is optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a real estate agent and can type fast, ABCLI can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"2. Download the latest `.jar` file from [here](https://github.com/AY2425S1-CS2103T-F13-2/tp/releases/).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar abcli.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"5. 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":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":"* Items in angle brackets represent input choices.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" e.g `t/\u003cbuyer,seller\u003e` can be used as `t/buyer` or as `t/seller` only.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS u/\u003cbuyer,seller\u003e [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":"* `add n/Betsy Crowe t/friend u/seller e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected change in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":"You will be able to view all people or filter by your contact type in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":"Format: `view [t/\u003cbuyer,seller\u003e]`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":"* `view t/buyer`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":"* `view`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"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","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"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","isFullCredit":false},{"lineNumber":180,"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":"### Meet up `[coming in v1.2]`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected feature in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"NgZiXin"},"content":"You will be able to schedule a meet-up event with your contacts.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"NgZiXin"},"content":"Format: `meetup n/NAME i/INFO`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":"* `meetup n/kennylewi i/Property viewing on saturday`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e_More features coming soon ..._","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":206,"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","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"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","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":34,"-":187}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"title: \"ABCLI\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"repository: \"AY2425S1-CS2103T-F13-2/tp\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"NgZiXin"},"content":" content: \"ABCLI\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: ABCLI","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"**ABCLI is a desktop application specially made for Real Estate Agents for managing their clients\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* If you are interested in using ABCLI, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* If you are interested about developing ABCLI, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"NgZiXin":6,"-":14}},{"path":"docs/team/Eswen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Solomon0519"},"content":"Hello World","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":1}},{"path":"docs/team/creditablex.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"### hello ###","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"good morning!!!!","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":3}},{"path":"docs/team/kennylewi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"layout: page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" * User Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":"* **Community**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"KennyLewi":46}},{"path":"docs/team/ngzixin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: Ng Zi Xin\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" * Formats the {@code meetup} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" public static String format(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":" builder.append(meetup.getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" .append(\"; Info: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getInfo())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" .append(\"; From: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getFrom())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":" .append(\"; To: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getTo());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":15,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" + PREFIX_PERSON_TYPE + \"buyer \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/AddMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Adds a meetup to the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a meetup to the address book. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"MEETUP INFO \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"YYYY-MM-DD HH:mm \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"YYYY-MM-DD HH:mm \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"Discuss work plans \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"Meet with Eswen to discuss the March Project \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"2024-02-03 14:00 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"2024-02-03 15:30 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Meetup added: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" private final MeetUp toAdd;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Creates an AddMeetUpCommand to add the specified {@code MeetUp}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(meetup);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" toAdd \u003d meetup;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" AddMeetUpCommand otherAddMeetupCommand \u003d (AddMeetUpCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return toAdd.equals(otherAddMeetupCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" PersonType updatedPersonType \u003d personToEdit.getPersonType(); // edit command does not allow editing personType","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedPersonType, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all persons\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":21}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" PersonType personType \u003d ParserUtil.parsePersonType(argMultimap.getValue(PREFIX_PERSON_TYPE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" Person person \u003d new Person(name, phone, email, address, personType, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":10,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddMeetUpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" * Parses input arguments and creates a new AddMeetUpCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommandParser implements Parser\u003cAddMeetUpCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Parses the given {@code String} of arguments in the context of the AddMeetUpCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" * and returns an AddMeetUpCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMeetUpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" String info \u003d argMultimap.getValue(PREFIX_INFO).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime from \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_FROM).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime to \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_TO).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" MeetUp meetUp \u003d new MeetUp(name, info, from, to);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommand(meetUp);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" return new ViewCommand();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" case AddMeetUpCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":4,"ylchin":3,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" public static final Prefix PREFIX_PERSON_TYPE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_INFO \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":3,"NgZiXin":1,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" * Parses a {@code String personType} into an {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" * @throws ParseException if the given {@code personType} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" public static PersonType parsePersonType(String personType) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":" String trimmedPersonType \u003d personType.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":" if (!PersonType.isValidType(trimmedPersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" throw new ParseException(PersonType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"NgZiXin"},"content":" return new PersonType(trimmedPersonType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"NgZiXin":16,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.schedule.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final FilteredList\u003cSchedule\u003e filteredSchedules \u003d null; //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"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","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":148}},{"path":"src/main/java/seedu/address/model/meetup/MeetUp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Meetup in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class MeetUp { //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" private final String name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" private final String info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" public MeetUp(String name, String info, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" requireAllNonNull(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" this.info \u003d info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" this.from \u003d from;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" this.to \u003d to;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":" * Returns true if both meetups have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two meetUps.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof MeetUp)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" MeetUp otherMeetUp \u003d (MeetUp) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" return name.equals(otherMeetUp.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" \u0026\u0026 info.equals(otherMeetUp.info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 from.equals(otherMeetUp.from)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 to.equals(otherMeetUp.to);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" return Objects.hash(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" .add(\"info\", info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" .add(\"from\", from)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" .add(\"to\", to)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":" public String getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"KennyLewi"},"content":" return this.name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"KennyLewi"},"content":" public String getInfo() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"KennyLewi"},"content":" return this.info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return this.from;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"KennyLewi"},"content":" return this.to;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"KennyLewi":36,"NgZiXin":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" public Person(Name name, Phone phone, Email email, Address address, PersonType personType, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(name, phone, email, address, tags, personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" return personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"NgZiXin"},"content":" .add(\"type\", personType)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":115}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":" * Represents a Person\u0027s type in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"public class PersonType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Only types allowed","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":" public enum Type {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":" BUYER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" SELLER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" return this.name().toLowerCase();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"User type must be specified as only \\\"buyer\\\" or \\\"seller\\\".\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-z]+\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" public final Type value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" * @param str A valid string that can transformed to a type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" public PersonType(String str) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(str);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" checkArgument(isValidType(str), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d Type.valueOf(str.toUpperCase());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" * @param type A valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" public PersonType(Type type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(type);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" for (Type aType : Type.values()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" if (aType.toString().equals(test)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof PersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" PersonType otherPersonType \u003d (PersonType) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":" return value.equals(otherPersonType.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":91}},{"path":"src/main/java/seedu/address/model/schedule/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Schedule in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class Schedule {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":" private final Person person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" private final MeetUp meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" public Schedule(Person person, MeetUp meetUp) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" this.person \u003d person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" this.meetUp \u003d meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" public Person getPerson() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" return person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" public MeetUp getMeetUp() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" return meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" * Returns true if Person is involved in this schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" public boolean isPersonInvolved(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return this.person.equals(person);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" * Returns true if MeetUp is involved in this schedule","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" public boolean isMeetupInvolved(MeetUp meetup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" return this.meetUp.equals(meetup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" return person.equals(otherSchedule.person)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 meetUp.equals(otherSchedule.meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" return Objects.hash(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" return String.format(\"%s is scheduled for %s\", person.toString(), meetUp.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":60}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" private final String personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" @JsonProperty(\"personType\") String personType,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" personType \u003d source.getPersonType().value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" final PersonType modelPersonType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPersonType, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":108}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" private Label personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" personType.setText(person.getPersonType().value.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"NgZiXin"},"content":"#personType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"NgZiXin"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"NgZiXin"},"content":" -fx-background-color: #f5182f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"NgZiXin"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"NgZiXin"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"NgZiXin"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"NgZiXin"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"NgZiXin"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":11,"-":352}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" \u003cGridPane hgap\u003d\"7\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" \u003cLabel fx:id\u003d\"personType\" text\u003d\"$personType\" GridPane.columnIndex\u003d\"0\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":35}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ylchin"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"NgZiXin"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"NgZiXin":2,"-":171}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_AMY \u003d \"seller\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_BOB \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_BOB \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_AMY \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"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","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ylchin":4,"-":35}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"NgZiXin"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"NgZiXin":30,"-":172}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":98}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", type\u003d\" + ALICE.getPersonType()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":98}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" private static final String VALID_PERSON_TYPE \u003d BENSON.getPersonType().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":19,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String DEFAULT_PERSON_TYPE \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" private PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" personType \u003d new PersonType(DEFAULT_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" personType \u003d personToCopy.getPersonType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" * Sets the {@code PersonType} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" public PersonBuilder withPersonType(String personType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(name, phone, email, address, personType, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"NgZiXin":14,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" sb.append(PREFIX_PERSON_TYPE + person.getPersonType().value.toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"seller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"buyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":75}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Team: CS2103T-F13-2","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"* This is **our team\u0027s project for CS2103T Software Engineering (SE) Module**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. Our goals are as follows:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":" - Write code of **good coding quality** that **follows SOLID principles**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":" - Provide **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" - Develop code base with **good software engineering practices and workflows**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"* Our application is named `Address Book Command Line Interface` (`ABCLI` for short) as it is an address book that is operated primarily through a command line interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* We have tailored our application specifically for Real Estate Agents","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* For the detailed documentation of this project, see the **[ABCLI Product Website](https://ay2425s1-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"### Ng Zi Xin","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"\u003cimg src\u003d\"images/ngzixin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"[[github](https://github.com/ngzixin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"[[portfolio](team/ngzixin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* Role: Code Quality Checker","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"* Responsibilities: Check Code Quality","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"### Chin Yi Ling","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"\u003cimg src\u003d\"images/ylchin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"[[github](https://github.com/ylchin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"[[portfolio](team/ylchin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":"* Responsibilities: Project deliverables","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":"* ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Solomon0519"},"content":"### Ng Eswen","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Solomon0519"},"content":"\u003cimg src\u003d\"images/solomon0519.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Solomon0519"},"content":"[[github](https://github.com/Solomon0519)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Solomon0519"},"content":"[[portfolio](team/Eswen.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Solomon0519"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Solomon0519"},"content":"* Responsiblities: Check proper documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"### Kenny Lewi","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":"\u003cimg src\u003d\"images/kennylewi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"[[github](http://github.com/kennylewi)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"[[portfolio](team/kennylewi.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":"* Role: Testing","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"CreditableX"},"content":"### Yiow Meng Loong","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"CreditableX"},"content":"\u003cimg src\u003d\"images/creditablex.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"CreditableX"},"content":"[[github](http://github.com/creditablex)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"CreditableX"},"content":"[[portfolio](team/creditablex.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"CreditableX"},"content":"* Responsibilities: Lead Team","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":6,"CreditableX":6,"KennyLewi":6,"ylchin":6,"NgZiXin":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"ylchin"},"content":"A real estate agent who...","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"ylchin"},"content":"* has a need to manage a significant number of client contacts","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"ylchin"},"content":"* frequently needs to track client information, such as property preferences, deal statuses, and meetings","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"ylchin"},"content":"* hopes to ensure smooth communication with clients by sending updates on listings, reminders for follow-ups, and managing appointments","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"ylchin"},"content":"**Value proposition**: Using CLI to streamline management of client contacts and communications will make it more efficient than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"ylchin"},"content":"|--------|---------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | add a new client | keep track of their information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | delete a client | remove entries that I no longer need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | find a client by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | categorize clients as buyers, sellers and renters | easily filter and manage different client types |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | filter contacts by tags (e.g. `Meeting Time`, `High` or `Low Priority`) | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | send bulk emails to groups of clients | inform them of new property listing |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | view my contacts using commands | track them better |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | collect the name, contact number and email of my clients | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | have a meeting schedule | keep track of future meetings |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"ylchin"},"content":"| `* * * ` | user | tag clients with labels like `high priority` or `first time buyer` | prioritise my outreach efforts |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | archive old client contacts | my address book remains up-to-date without deleting past information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | mark clients as `inactive` or `closed deal` | focus on active prospects |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"ylchin"},"content":"| `* *` | user | store notes about clients\u0027 property preferences | tailor property recommendations to their needs |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set reminders for client follow-ups | don\u0027t miss important communications |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"ylchin"},"content":"| `* *` | user | group clients by location preferences | easily send property updates |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track status of property deals for each client (e.g. `interested`, `offer made`, `contract signed`) | stay organised |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | log the last interaction date with the client | maintain regular communication |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | export my contact list to Excel or CSV | share it with colleagues or for reporting purposes |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | import contacts from my phone or other databases | quickly build by address book |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"ylchin"},"content":"| `* *` | user | add notes to client interactions | capture important details discussed in meetings or phone calls |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set a follow-up frequency for each client | stay in regular contact |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track a client\u0027s viewing history | know which client have been shown to which property |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"ylchin"},"content":"| `* *` | user | filter clients by their buying timelines (e.g. immediate, next 5 months) | focus on urgent leads |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set up reminders for key seller-related milestones (e.g. contract expiration, price reduction discussions) | never miss an important deadline |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track client communication preferences | engage them through their preferred channels |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ylchin"},"content":"| `* *` | user | generate a visual itmeline of a property\u0027s selling process | easily communicate progress to sellers |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"ylchin"},"content":"| `* *` | user | collect budget preference, neighbourhood preference and property of my buyer and seller | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"ylchin"},"content":"| `*` | user | receive notifications when it\u0027s time to follow up with a client | not forget |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"ylchin"},"content":"| `*` | user | assign a lead source to each client, e.g. referral, open house, website | know where my business is coming from |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"ylchin"},"content":"| `*` | real estate agent | schedule and track open house events | ensure smooth operations and follow up with attendees |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"ylchin"},"content":"| `*` | user | monitor competing listings in the same area | adjust pricing and marketing strategies accordingly |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"ylchin"},"content":"| `*` | user | track commission details for each property sale | keep accurate financial records |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"ylchin"},"content":"| `*` | user | generate reports on the number of leads genrated per listing | show sellers the interest their property is receiving |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"ylchin"},"content":"| `*` | user | manage and log referral partner interactions (e.g. contractors, photographers) | maintain strong professional relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"ylchin"},"content":"| `*` | user | send property performance updates to sellers (e.g. number of views, showings) | keep them informed and engaged |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"ylchin"},"content":"| `*` | user | track which clients were referre by past clients | send personalised appreciation messages and foster long-term relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Solomon0519"},"content":"(For all use cases below, the **System** is `ABCLI` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 1: Adding a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the contact","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Solomon0519"},"content":"- Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Solomon0519"},"content":"* 1a. The contact format is invalid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Solomon0519"},"content":" * 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Solomon0519"},"content":" * Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 2: Deleting a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Solomon0519"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Solomon0519"},"content":"3. User requests to delete a specific contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI deletes the contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Solomon0519"},"content":"5. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Solomon0519"},"content":"6. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Solomon0519"},"content":"- 3a. The index for deletion is not a positive whole number","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Solomon0519"},"content":" - 3a1. ABCLI shows an error message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Solomon0519"},"content":"- 3b. The index for deletion is out of range","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Solomon0519"},"content":" - 3b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 3: Adding a meetup\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of meetups on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Solomon0519"},"content":"- 1a. The command is missing a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Solomon0519"},"content":" - 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Solomon0519"},"content":"- 1b. The command is missing a flag","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Solomon0519"},"content":" - 1b1 ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 4: Viewing contacts\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Solomon0519"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Solomon0519"},"content":"- 1a. Viewing buyer and seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Solomon0519"},"content":" - 1a1. User requests to view buyer contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Solomon0519"},"content":" - 1a2. ABCLI shows the list of contacts of buyers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Solomon0519"},"content":" - 1a3. User requests to view seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Solomon0519"},"content":" - 1a4. ABCLI shows the list of contacts of sellers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Solomon0519"},"content":"- 1b. t/ flag has invalid contact type","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Solomon0519"},"content":" - 1b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":415,"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","isFullCredit":false},{"lineNumber":416,"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","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"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","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"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","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"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","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"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","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"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","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"CreditableX"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be a result of evolving/enhancing/morphing the given codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be targeting users who can type fast and prefer typing over other means of input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be for a single user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"CreditableX"},"content":"1. ABCLI needs to be developed in a breadth-first incremental manner over the project duration.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"CreditableX"},"content":"1. ABCLI\u0027s data should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"CreditableX"},"content":"1. ABCLI cannot use a DBMS to store data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should follow the Object-oriented paradigm primarily.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on the Windows, Linux, and OS-X platforms.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on a computer that has version 17 of Java.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should not depend on your own remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"CreditableX"},"content":"1. The use of third-party frameworks/libraries/services is allowed but only if they are free, open-source, and have permissive license terms and do not require any installation by users and do not violate other constraints.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"CreditableX"},"content":"1. The GUI should work well for standard screen resolutions 1920x1080 and higher and for screen scales 100% and 125%. In addition, the GUI should be usable for resolutions 1280x720 and higher, and for screen scales 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"CreditableX"},"content":"1. ABCLI has to be packaged into a single JAR file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"CreditableX"},"content":"### Glossary","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"CreditableX"},"content":"1. **ABCLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"CreditableX"},"content":"Our product name.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"CreditableX"},"content":"1. **CLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"CreditableX"},"content":"The command line interface is a way to interact with a computer by typing text commands instead of using a mouse to click on icons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"CreditableX"},"content":"1. **Command Line** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"CreditableX"},"content":"A text box where you enter commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"CreditableX"},"content":"1. **Flag** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"CreditableX"},"content":"In our context, a flag is something preceded by a /, but is not the initial command. e.g in `add n/NAME`, `n/` is a flag but `add` is not.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"CreditableX"},"content":"1. **GUI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"CreditableX"},"content":"Graphical user interface. The screen you see when opening the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"CreditableX"},"content":"1. [**Java**](https://www.java.com/en/) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"CreditableX"},"content":"A programming language.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"CreditableX"},"content":"1. **Parameter** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"CreditableX"},"content":"A value that you need to provide for the command to work. e.g in `add n/NAME`, `NAME` is a parameter.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"CreditableX"},"content":"1. [**Windows**](https://en.wikipedia.org/wiki/Microsoft_Windows) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"CreditableX"},"content":"An operating system.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Solomon0519":72,"CreditableX":53,"ylchin":42,"NgZiXin":1,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"Address Book Command Line Interface (ABCLI) is a **desktop app made specially for Real Estate Agents to manage contacts and is optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a real estate agent and can type fast, ABCLI can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"2. Download the latest `.jar` file from [here](https://github.com/AY2425S1-CS2103T-F13-2/tp/releases/).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar abcli.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"5. 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":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":"* Items in angle brackets represent input choices.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" e.g `t/\u003cbuyer,seller\u003e` can be used as `t/buyer` or as `t/seller` only.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS u/\u003cbuyer,seller\u003e [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":"* `add n/Betsy Crowe t/friend u/seller e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected change in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":"You will be able to view all people or filter by your contact type in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":"Format: `view [t/\u003cbuyer,seller\u003e]`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":"* `view t/buyer`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":"* `view`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"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","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"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","isFullCredit":false},{"lineNumber":180,"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":"### Meet up `[coming in v1.2]`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected feature in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"NgZiXin"},"content":"You will be able to schedule a meet-up event with your contacts.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"NgZiXin"},"content":"Format: `meetup n/NAME i/INFO`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":"* `meetup n/kennylewi i/Property viewing on saturday`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e_More features coming soon ..._","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":206,"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","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"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","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":34,"-":187}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"title: \"ABCLI\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"repository: \"AY2425S1-CS2103T-F13-2/tp\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"NgZiXin"},"content":" content: \"ABCLI\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: ABCLI","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"**ABCLI is a desktop application specially made for Real Estate Agents for managing their clients\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* If you are interested in using ABCLI, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* If you are interested about developing ABCLI, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"NgZiXin":6,"-":14}},{"path":"docs/team/Eswen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Solomon0519"},"content":"Hello World","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":1}},{"path":"docs/team/creditablex.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"### hello ###","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"good morning!!!!","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":3}},{"path":"docs/team/kennylewi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"layout: page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"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-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" * User Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":"* **Community**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"KennyLewi":46}},{"path":"docs/team/ngzixin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: Ng Zi Xin\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" * Formats the {@code meetup} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" public static String format(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":" builder.append(meetup.getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" .append(\"; Info: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getInfo())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" .append(\"; From: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getFrom())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":" .append(\"; To: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getTo());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":15,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" + PREFIX_PERSON_TYPE + \"buyer \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/AddMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Adds a meetup to the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a meetup to the address book. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"MEETUP INFO \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"YYYY-MM-DD HH:mm \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"YYYY-MM-DD HH:mm \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"Discuss work plans \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"Meet with Eswen to discuss the March Project \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"2024-02-03 14:00 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"2024-02-03 15:30 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Meetup added: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" private final MeetUp toAdd;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Creates an AddMeetUpCommand to add the specified {@code MeetUp}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(meetup);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" toAdd \u003d meetup;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" AddMeetUpCommand otherAddMeetupCommand \u003d (AddMeetUpCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return toAdd.equals(otherAddMeetupCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" PersonType updatedPersonType \u003d personToEdit.getPersonType(); // edit command does not allow editing personType","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedPersonType, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/FilterMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUpContainsDate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"CreditableX"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"CreditableX"},"content":" * Finds and lists all meetings in address book whose date is the same as the given date.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"CreditableX"},"content":"public class FilterMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"CreditableX"},"content":" public static final String COMMAND_WORD \u003d \"filterMeetup\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"CreditableX"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all meetings whose date matches \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":" + \" the given date and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"CreditableX"},"content":" + \"Parameters: KEYWORD yyyy-mm-dd\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"CreditableX"},"content":" + \"Example: \" + COMMAND_WORD + \"2022-12-12\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"CreditableX"},"content":" private final MeetUpContainsDate predicate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"CreditableX"},"content":" public FilterMeetUpCommand(MeetUpContainsDate predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"CreditableX"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" return null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"CreditableX"},"content":" // requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"CreditableX"},"content":" // model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":" // return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"CreditableX"},"content":" // String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"CreditableX"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"CreditableX":34}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all persons satisfying client type\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose person types match the keyword\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":" + \"(buyer/seller) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" + \"If there are no keywords specified, all persons are listed.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":" + \"Parameters: [buyer/seller](optional)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" + \"Example: \" + COMMAND_WORD + \" buyer\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" private final PersonFulfilsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" public ViewCommand(PersonFulfilsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ylchin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ylchin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ylchin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ylchin"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ylchin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ylchin"},"content":" ViewCommand e \u003d (ViewCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ylchin"},"content":" return predicate.equals(e.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ylchin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ylchin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ylchin"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ylchin"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ylchin":43,"-":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" PersonType personType \u003d ParserUtil.parsePersonType(argMultimap.getValue(PREFIX_PERSON_TYPE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" Person person \u003d new Person(name, phone, email, address, personType, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":10,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddMeetUpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" * Parses input arguments and creates a new AddMeetUpCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommandParser implements Parser\u003cAddMeetUpCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Parses the given {@code String} of arguments in the context of the AddMeetUpCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" * and returns an AddMeetUpCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMeetUpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" String info \u003d argMultimap.getValue(PREFIX_INFO).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime from \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_FROM).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime to \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_TO).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" MeetUp meetUp \u003d new MeetUp(name, info, from, to);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommand(meetUp);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" case AddMeetUpCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":4,"ylchin":3,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" public static final Prefix PREFIX_PERSON_TYPE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_INFO \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":3,"NgZiXin":1,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" * Parses a {@code String personType} into an {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" * @throws ParseException if the given {@code personType} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" public static PersonType parsePersonType(String personType) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":" String trimmedPersonType \u003d personType.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":" if (!PersonType.isValidType(trimmedPersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" throw new ParseException(PersonType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"NgZiXin"},"content":" return new PersonType(trimmedPersonType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"NgZiXin":16,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ylchin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ylchin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ylchin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ylchin"},"content":" * and returns an ViewCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" String keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":" keyword \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" } else {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":" keyword \u003d trimmedArgs.split(\"\\\\s+\")[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" if (!keyword.equals(\"buyer\") \u0026\u0026 !keyword.equals(\"seller\")) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ylchin"},"content":" return new ViewCommand(new PersonFulfilsPredicate(keyword));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"ylchin":34}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"CreditableX"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"CreditableX"},"content":" * Updates the filter of the meetup list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"CreditableX"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"CreditableX"},"content":" void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":7,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.schedule.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" private final FilteredList\u003cMeetUp\u003e filteredMeetUps \u003d null; // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" private final FilteredList\u003cSchedule\u003e filteredSchedules \u003d null; //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"CreditableX"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered MeetUp 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-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"CreditableX"},"content":" public void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"CreditableX"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"CreditableX"},"content":" filteredMeetUps.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"CreditableX":9,"NgZiXin":2,"-":148}},{"path":"src/main/java/seedu/address/model/meetup/MeetUp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Meetup in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class MeetUp { //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" private final String name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" private final String info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" public MeetUp(String name, String info, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" requireAllNonNull(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" this.info \u003d info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" this.from \u003d from;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" this.to \u003d to;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":" * Returns true if both meetups have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two meetUps.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof MeetUp)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" MeetUp otherMeetUp \u003d (MeetUp) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" return name.equals(otherMeetUp.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" \u0026\u0026 info.equals(otherMeetUp.info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 from.equals(otherMeetUp.from)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 to.equals(otherMeetUp.to);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" return Objects.hash(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" .add(\"info\", info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" .add(\"from\", from)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" .add(\"to\", to)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":" public String getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"KennyLewi"},"content":" return this.name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"KennyLewi"},"content":" public String getInfo() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"KennyLewi"},"content":" return this.info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return this.from;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"KennyLewi"},"content":" return this.to;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"KennyLewi":36,"NgZiXin":52}},{"path":"src/main/java/seedu/address/model/meetup/MeetUpContainsDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"CreditableX"},"content":"import java.util.Date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"CreditableX"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"CreditableX"},"content":" * Tests that a {@code Meetup}\u0027s {@code Date} range contains the given date.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"CreditableX"},"content":"public class MeetUpContainsDate implements Predicate\u003cMeetUp\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"CreditableX"},"content":" private final Date date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"CreditableX"},"content":" * Date must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"CreditableX"},"content":" public MeetUpContainsDate(Date date) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"CreditableX"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"CreditableX"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"CreditableX"},"content":" public boolean test(MeetUp meetUp) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"CreditableX"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"CreditableX"},"content":" //return !meetUp.getFrom().before(this.date) \u0026\u0026 !meetUp.getTo().after(this.date);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"CreditableX"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":28}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" public Person(Name name, Phone phone, Email email, Address address, PersonType personType, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(name, phone, email, address, tags, personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" return personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"NgZiXin"},"content":" .add(\"type\", personType)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":115}},{"path":"src/main/java/seedu/address/model/person/PersonFulfilsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ylchin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":" * Tests that a {@code Person}\u0027s {@code PersonType} matches the given keyword.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":"public class PersonFulfilsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ylchin"},"content":" private final String keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":" public PersonFulfilsPredicate(String keyword) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ylchin"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":" return person.getPersonType().value.toString().equals(keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ylchin"},"content":" if (!(other instanceof PersonFulfilsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate otherPredicate \u003d (PersonFulfilsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" return keyword.equals(otherPredicate.keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"ylchin":38}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":" * Represents a Person\u0027s type in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"public class PersonType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Only types allowed","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":" public enum Type {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":" BUYER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" SELLER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" return this.name().toLowerCase();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"User type must be specified as only \\\"buyer\\\" or \\\"seller\\\".\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-z]+\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" public final Type value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" * @param str A valid string that can transformed to a type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" public PersonType(String str) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(str);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" checkArgument(isValidType(str), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d Type.valueOf(str.toUpperCase());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" * @param type A valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" public PersonType(Type type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(type);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" for (Type aType : Type.values()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" if (aType.toString().equals(test)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof PersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" PersonType otherPersonType \u003d (PersonType) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":" return value.equals(otherPersonType.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":91}},{"path":"src/main/java/seedu/address/model/schedule/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Schedule in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class Schedule {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":" private final Person person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" private final MeetUp meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" public Schedule(Person person, MeetUp meetUp) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" this.person \u003d person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" this.meetUp \u003d meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" public Person getPerson() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" return person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" public MeetUp getMeetUp() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" return meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" * Returns true if Person is involved in this schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" public boolean isPersonInvolved(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return this.person.equals(person);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" * Returns true if MeetUp is involved in this schedule","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" public boolean isMeetupInvolved(MeetUp meetup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" return this.meetUp.equals(meetup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" return person.equals(otherSchedule.person)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 meetUp.equals(otherSchedule.meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" return Objects.hash(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" return String.format(\"%s is scheduled for %s\", person.toString(), meetUp.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":60}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" private final String personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" @JsonProperty(\"personType\") String personType,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" personType \u003d source.getPersonType().value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" final PersonType modelPersonType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPersonType, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":108}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" private Label personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" personType.setText(person.getPersonType().value.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"NgZiXin"},"content":"#personType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"NgZiXin"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"NgZiXin"},"content":" -fx-background-color: #f5182f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"NgZiXin"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"NgZiXin"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"NgZiXin"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"NgZiXin"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"NgZiXin"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":11,"-":352}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" \u003cGridPane hgap\u003d\"7\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" \u003cLabel fx:id\u003d\"personType\" text\u003d\"$personType\" GridPane.columnIndex\u003d\"0\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":35}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" String viewCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(viewCommand, expectedMessage, model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"NgZiXin"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ylchin":5,"NgZiXin":2,"-":171}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"CreditableX"},"content":" public void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e meetUp) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":6,"-":204}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_AMY \u003d \"seller\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_BOB \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_BOB \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_AMY \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"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","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/FilterMeetUpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"// TODO","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":1}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" public void execute_zeroKeywords_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 7);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d preparePredicate(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":" ViewCommand command \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ylchin"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ylchin"},"content":" public void execute_invalidKeyword_noPersonsFound() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d preparePredicate(\"hello\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ylchin"},"content":" ViewCommand command \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ylchin"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ylchin"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ylchin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ylchin"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate firstPredicate \u003d new PersonFulfilsPredicate(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate secondPredicate \u003d new PersonFulfilsPredicate(\"buyer\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ylchin"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ylchin"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ylchin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ylchin"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ylchin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ylchin"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ylchin"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ylchin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ylchin"},"content":" // different keyword -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(viewSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ylchin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ylchin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d new PersonFulfilsPredicate(\"buyer\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ylchin"},"content":" ViewCommand viewCommand \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ylchin"},"content":" String expected \u003d ViewCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ylchin"},"content":" assertEquals(expected, viewCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ylchin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" * Parses {@code userInput} into a {@code PersonFulfilsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ylchin"},"content":" private PersonFulfilsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ylchin"},"content":" String trimmedArgs \u003d userInput.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ylchin"},"content":" String keyword \u003d trimmedArgs.isEmpty() ? \"\" : trimmedArgs.split(\"\\\\s+\")[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ylchin"},"content":" return new PersonFulfilsPredicate(keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ylchin":64,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"NgZiXin"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"NgZiXin":30,"-":172}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" buyer\") instanceof ViewCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":98}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", type\u003d\" + ALICE.getPersonType()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":98}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" private static final String VALID_PERSON_TYPE \u003d BENSON.getPersonType().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":19,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String DEFAULT_PERSON_TYPE \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" private PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" personType \u003d new PersonType(DEFAULT_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" personType \u003d personToCopy.getPersonType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" * Sets the {@code PersonType} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" public PersonBuilder withPersonType(String personType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(name, phone, email, address, personType, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"NgZiXin":14,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" sb.append(PREFIX_PERSON_TYPE + person.getPersonType().value.toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"seller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"buyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":75}}] diff --git a/AY2425S1-CS2103T-F13-2_tp_master/commits.json b/AY2425S1-CS2103T-F13-2_tp_master/commits.json index 7a7c3b75..9fb663e2 100644 --- a/AY2425S1-CS2103T-F13-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-F13-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Solomon0519":[{"date":"2024-09-25","commitResults":[{"hash":"019bb6c81f590ce5959ef99d94ece258f0c2c706","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"ff2af10aa0618b2d935d5f06abfd4c43646be589","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"ed5e494404d25626cff1564ac308409b4025bcd9","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"782cf42496199b83682e72abc1953bc77887f887","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":13}}},{"hash":"412951930ecea54d2a31df7764c7d6bb5affd725","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NgZiXin/update-readme","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"0a736acabbbf083fe5540191d801ab8979a3884f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NgZiXin/add-expected-updates-userguide","messageBody":"Add expected updates userguide","fileTypesAndContributionMap":{}},{"hash":"6c906adf7d0ab83f4120d142b51868cf83aa8ca2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-userguide-context","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f6a28f8b408176b467ce9fd5365f0b0df83343b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NgZiXin/update-userguide-context","messageBody":"Update user guide context to match ABCLI","fileTypesAndContributionMap":{}},{"hash":"c56df3f9ec802cd7b397f6980d680199f551e8d4","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":6}}}]},{"date":"2024-10-09","commitResults":[{"hash":"6d81889dbf198632da2adfef71c2eb77378a645b","isMergeCommit":false,"messageTitle":"Touch up use cases for Develop","messageBody":"Reformat the use cases according to guidelines.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":106}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7bdc60a3a53edf84e10b5802d820955cc1db1b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from NgZiXin/add-client-type","messageBody":"Add client type","fileTypesAndContributionMap":{}},{"hash":"0c81376ba6ddeed1472a9ab4bb92bfbf45900448","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NgZiXin/add-schedule","messageBody":"Add Schedule and MeetUp class skeleton","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"bc1e09e3f9eb337eab378102eb789e2afe2e8d26","isMergeCommit":true,"messageTitle":"Merge pull request #72 from KennyLewi/add-meetup-class","messageBody":"Add meetup class","fileTypesAndContributionMap":{}}]}],"CreditableX":[{"date":"2024-09-25","commitResults":[{"hash":"98bdf4ed0c782b63ff6fbe72ea7660defb3cba07","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":90}}},{"hash":"bba13d195aed4f5ec3b46be4ff287b605613a51a","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"55717d78f10b387a90c85c97d5b62743470125ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"807c3c262548445056defdf8078bd8f55d049a0b","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Solomon0519/A-AboutUs","messageBody":"Edit team roles and responsibility","fileTypesAndContributionMap":{}},{"hash":"7c9649ebf82e83ea10041f9587b41fcef20f0f68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"64eed5951255091b817fb2b7c8face68fb2f8f39","isMergeCommit":true,"messageTitle":"Merge pull request #22 from KennyLewi/update-aboutus","messageBody":"Update AboutUs.md for kenny","fileTypesAndContributionMap":{}},{"hash":"2c72009ca91bc8e58eec16cf28340c1fa59d8e4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-yiLing-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51e07a737d2598d1a3e656f10214a942cb7ad9f3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ylchin/add-yiLing-info","messageBody":"Add Yi Ling\u0027s information in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"343f45084a33fec3a38d4c45641b4ae3281eafba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2245f1faae6dbe9e75512b7b89be1d032a76e2db","isMergeCommit":true,"messageTitle":"Merge pull request #24 from NgZiXin/A-AboutUs","messageBody":"Update AboutUs page","tags":["v1.0"],"fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5f7bf577acf59dc4da16a965ca7e32ea03d1858b","isMergeCommit":false,"messageTitle":"Add Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"7f4da25ff459b66c05d953a9195999d4a305705b","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"becb9487eb9f0a0bf01963dee8ec11436715ea87","isMergeCommit":false,"messageTitle":"add Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"429138a4c74d2c7c25e2684d96da1d473212a0fa","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}},{"hash":"e048d515e5b258a819f4375d44838f78913d4393","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"b15947d7c3766ce335ba7b3e36ecd058a9f51425","isMergeCommit":false,"messageTitle":"update Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":15}}},{"hash":"2f8c14855a9af2eed6e93859a7be93a12a26beb0","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"cf3815e0be0e391e1020e0254c6d6cfee1d00e39","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"353228d8cc6c4489815ed83de4e8dfe9197c8033","isMergeCommit":true,"messageTitle":"Merge pull request #40 from NgZiXin/update-homepage","messageBody":"Update homepage","fileTypesAndContributionMap":{}},{"hash":"466cb03bca29c6384d5255ce7c21f0c7e13cd52f","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"79c34e87122f1415ebaa038f043f40a3635a1705","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"89b8d373f6dc21d7d420f55e2431d5354be7fcea","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f268e60ee7cb17978abc2c40598bdbff37edb961","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]}],"KennyLewi":[{"date":"2024-09-25","commitResults":[{"hash":"5f4252aef03266f61f582c65a864f8e781ebbe9c","isMergeCommit":false,"messageTitle":"Update AboutUs.md for kenny","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"c872dbad300dd8e3cb4d65156f2d8b5567b8a7fc","isMergeCommit":false,"messageTitle":"Update AboutUs.md kenny portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"853a93ef66a3547a36077cfe2a516acdce25357a","isMergeCommit":false,"messageTitle":"Add meetup toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d26db46d191b16ac5da735cb9826c4f6c0d5771a","isMergeCommit":false,"messageTitle":"Add meetup class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":7}}}]},{"date":"2024-10-12","commitResults":[{"hash":"79db899e03bbd87f93eca8d89786fa7a9209adba","isMergeCommit":false,"messageTitle":"Create command to add meetups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":21}}}]}],"ylchin":[{"date":"2024-09-25","commitResults":[{"hash":"4e9723e0e675145501b14a3a6b068b7641c0d964","isMergeCommit":false,"messageTitle":"Remove Does","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":49}}},{"hash":"2eda5ca07c603c1d9364bc7c941f7cd6fe4d7671","isMergeCommit":false,"messageTitle":"Revert \"Remove Does\"","messageBody":"This reverts commit 4e9723e0e675145501b14a3a6b068b7641c0d964.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":0}}},{"hash":"f4c5a63d45a5260cd79fc68ef8132be3b65c0db2","isMergeCommit":false,"messageTitle":"Update Yi Ling\u0027s information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":45}}},{"hash":"7bdbce3414dde3f1dc34cd95e06b5beb4dfa3702","isMergeCommit":false,"messageTitle":"Update newline at end of file for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ef0bfc3384eb8f6394bba388a75d8ca970b98714","isMergeCommit":false,"messageTitle":"Create portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"94a849be2ae9fb330a43476b2fa1e87b65728e28","isMergeCommit":false,"messageTitle":"Update link to portfolio in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"deffcdc7e4862d2a3b015afeb94ce1e88b7e928d","isMergeCommit":false,"messageTitle":"Update target user profile in Developer Guide","messageBody":"The current target user profile does not fully align with\nthe project’s selected direction and vision.\n\nUpdating the target user profile is necessary to ensure\nthat it accurately reflects the intended audience and\nthe project’s goals.\n\nUpdate the target user profile in the developer guide to\nmatch the selected project direction.\n\nThis change ensures that the documentation remains\nconsistent with the project’s objectives and target\naudience, providing clearer guidance to future developers.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"b1b3d74d145e32b6bab2e735e8e3b50e6db747e2","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition does not fully align with the\nproject’s selected direction and updated objectives.\n\nIt needs to be revised to ensure that it accurately communicates\nthe unique benefits and focus of the project.\n\nUpdate the value proposition in the developer guide to reflect\nthe selected project direction.\n\nThis update is necessary to ensure the value proposition is\nconsistent with the project’s current goals and target audience,\nproviding clear messaging to stakeholders.\n\nNo other changes are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e8425b8dbb4955ebd9a32e04947f934bb253236a","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"The current user stories in the developer guide do not fully\nreflect the project’s current scope and direction.\n\nThese stories need to be updated to accurately represent the\nneeds and goals of the target users and to ensure alignment\nwith the project’s objectives.\n\nUpdate the user stories in the developer guide to match the\nselected project direction, refining the use cases and\nrequirements.\n\nThis update is done to maintain consistency and ensure the\ndocumentation reflects the project’s goals, providing clear\nguidance for future development.\n\nNo other modifications are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-02","commitResults":[{"hash":"936636ce2ad40b9c2d1d71540d11760fba7180bc","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition in the developer guide lacks\ndetail and does not fully articulate the project’s unique\noffering to its target users.\n\nA more detailed value proposition is needed to clearly explain\nhow the project stands out and how it benefits users in its\nspecific context.\n\nUpdate the value proposition in the developer guide to include\nmore detail, focusing on the unique advantages of the project\nand the specific needs it addresses for its target audience.\n\nThis update ensures that the developer guide provides a clear\nand compelling explanation of the project’s value, supporting\nfuture development and user engagement.\n\nNo other sections are affected by this change.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa24a1698f3362315d27e8ec4ffab43b2f505b75","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NgZiXin/update-settings","messageBody":"Update settings","fileTypesAndContributionMap":{}},{"hash":"f14273e557521871034f4077cdecbf6386614f8b","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CreditableX/branch-NonFunctionalRequirements","messageBody":"Add Non-Functional Requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"298b9aff2bdcd0613fbd6e37e66fd128119c2070","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}}]}],"NgZiXin":[{"date":"2024-09-25","commitResults":[{"hash":"68cd6880981e3a87432963eaac86a462f6cfdf7e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":46}}},{"hash":"e30dce12d76ef7532158e6deea5a284c3807f18d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from CreditableX/A-UpdateAboutUs","messageBody":"Update AboutUs for Meng","fileTypesAndContributionMap":{}},{"hash":"1ee3fb5842d2a7b8cb1e747ce7d1fa040b9bc755","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":42}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fb7fdb4ba59564968a74dd73b638682a546d338a","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"9ffb77f02fe57e405d1e84d5dae564e435afb08e","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"cc904997ed09e551ae696124f40e4ade5bf9affd","isMergeCommit":false,"messageTitle":"Update repo link","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"c3f238e2913696c1236acc72421f446f9da8e002","isMergeCommit":false,"messageTitle":"Update user guide context to match ABCLI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}},{"hash":"d5646d3c11943608600a418cfd738952193349ca","isMergeCommit":false,"messageTitle":"Update user guide expected features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":2}}},{"hash":"2b5242be20b1feb61a27020c4e3da43c8678c260","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"f1faebcbc9dcaaa5861fa079c084afd3ca3b1f87","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6de8ab4ac07984dc70b350988a6915a1f5d28242","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f3e1273488d7a9396cb1d2a56e212931c9ef6ec9","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ylchin/add-target-user","messageBody":"Update target user profile in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"08031fba066a56cb5d953a8343852dbcf8657186","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ylchin/add-user-stories","messageBody":"Update user stories in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"034e148f5d3a6794ba1bb0f2a24d4b3581e1dc57","isMergeCommit":true,"messageTitle":"Merge pull request #36 from ylchin/add-value-proposition","messageBody":"Update value proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"9409e31e8cb4925c244dd6e762c1923b0a643d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9afb4232b68174aa1aa09c4ad38379d02ccc8df9","isMergeCommit":true,"messageTitle":"Merge pull request #50 from CreditableX/branch-Glossary","messageBody":"Add Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"5a56910589a86149da31aaffc685976ddee6e0f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Solomon0519/tP-UseCases","messageBody":"Edit use cases for DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"30412d29786408363aafe8a3c8fa150849fbcc68","isMergeCommit":true,"messageTitle":"Merge pull request #51 from KennyLewi/add-ui-mockup","messageBody":"Add ui mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"61cfc05f2c3f4ba198080b4505547e6d93f49cc1","isMergeCommit":false,"messageTitle":"Add client type to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":9},"test-code":{"insertions":71,"deletions":33}}},{"hash":"cc5a3635b5f4180411151e69a28bb705a157d307","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":18}}},{"hash":"ceff85ce06dd7123c6d89729569d9f5a9b88eb89","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Solomon0519/tP-UseCases","messageBody":"Touch up use cases for Develop","fileTypesAndContributionMap":{}},{"hash":"bdc00d02b506521f2d878cd218e389514c437c1a","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":4}}},{"hash":"025604b553f109693d433ee8b582797a0be12559","isMergeCommit":false,"messageTitle":"Add Schedule and MeetUp class skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0948cf346dbd131a0a7acc31b8e60f5283efdd7b","isMergeCommit":true,"messageTitle":"Merge pull request #61 from ylchin/refactor-code","messageBody":"Closes #60","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"418e8abe3e4fd115f07dcc9ecb62be4918cfdca9","isMergeCommit":true,"messageTitle":"Merge pull request #65 from KennyLewi/add-meetup-command","messageBody":"Add meetup toString","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Solomon0519":{"docs":79,"functional-code":0,"test-code":0},"CreditableX":{"docs":62,"functional-code":0,"test-code":0},"KennyLewi":{"docs":52,"functional-code":187,"test-code":0},"ylchin":{"docs":48,"functional-code":6,"test-code":10},"NgZiXin":{"docs":57,"functional-code":300,"test-code":78,"other":3}},"authorContributionVariance":{"Solomon0519":2046.7787,"CreditableX":1270.8662,"KennyLewi":1190.1249,"ylchin":1732.5925,"NgZiXin":9348.685},"authorDisplayNameMap":{"Solomon0519":"CS2103T-F13-2 NG E..SWEN","CreditableX":"CS2103T-F13-2 YIOW..OONG","KennyLewi":"CS2103T-F13-2 KENN..LEWI","ylchin":"CS2103T-F13-2 CHIN..LING","NgZiXin":"CS2103T-F13-2 NG Z.. XIN"}} +{"authorDailyContributionsMap":{"Solomon0519":[{"date":"2024-09-25","commitResults":[{"hash":"019bb6c81f590ce5959ef99d94ece258f0c2c706","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"ff2af10aa0618b2d935d5f06abfd4c43646be589","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"ed5e494404d25626cff1564ac308409b4025bcd9","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"782cf42496199b83682e72abc1953bc77887f887","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":13}}},{"hash":"412951930ecea54d2a31df7764c7d6bb5affd725","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NgZiXin/update-readme","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"0a736acabbbf083fe5540191d801ab8979a3884f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NgZiXin/add-expected-updates-userguide","messageBody":"Add expected updates userguide","fileTypesAndContributionMap":{}},{"hash":"6c906adf7d0ab83f4120d142b51868cf83aa8ca2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-userguide-context","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f6a28f8b408176b467ce9fd5365f0b0df83343b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NgZiXin/update-userguide-context","messageBody":"Update user guide context to match ABCLI","fileTypesAndContributionMap":{}},{"hash":"c56df3f9ec802cd7b397f6980d680199f551e8d4","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":6}}}]},{"date":"2024-10-09","commitResults":[{"hash":"6d81889dbf198632da2adfef71c2eb77378a645b","isMergeCommit":false,"messageTitle":"Touch up use cases for Develop","messageBody":"Reformat the use cases according to guidelines.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":106}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7bdc60a3a53edf84e10b5802d820955cc1db1b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from NgZiXin/add-client-type","messageBody":"Add client type","fileTypesAndContributionMap":{}},{"hash":"0c81376ba6ddeed1472a9ab4bb92bfbf45900448","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NgZiXin/add-schedule","messageBody":"Add Schedule and MeetUp class skeleton","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"bc1e09e3f9eb337eab378102eb789e2afe2e8d26","isMergeCommit":true,"messageTitle":"Merge pull request #72 from KennyLewi/add-meetup-class","messageBody":"Add meetup class","fileTypesAndContributionMap":{}}]}],"CreditableX":[{"date":"2024-09-25","commitResults":[{"hash":"98bdf4ed0c782b63ff6fbe72ea7660defb3cba07","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":90}}},{"hash":"bba13d195aed4f5ec3b46be4ff287b605613a51a","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"55717d78f10b387a90c85c97d5b62743470125ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"807c3c262548445056defdf8078bd8f55d049a0b","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Solomon0519/A-AboutUs","messageBody":"Edit team roles and responsibility","fileTypesAndContributionMap":{}},{"hash":"7c9649ebf82e83ea10041f9587b41fcef20f0f68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"64eed5951255091b817fb2b7c8face68fb2f8f39","isMergeCommit":true,"messageTitle":"Merge pull request #22 from KennyLewi/update-aboutus","messageBody":"Update AboutUs.md for kenny","fileTypesAndContributionMap":{}},{"hash":"2c72009ca91bc8e58eec16cf28340c1fa59d8e4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-yiLing-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51e07a737d2598d1a3e656f10214a942cb7ad9f3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ylchin/add-yiLing-info","messageBody":"Add Yi Ling\u0027s information in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"343f45084a33fec3a38d4c45641b4ae3281eafba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2245f1faae6dbe9e75512b7b89be1d032a76e2db","isMergeCommit":true,"messageTitle":"Merge pull request #24 from NgZiXin/A-AboutUs","messageBody":"Update AboutUs page","tags":["v1.0"],"fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5f7bf577acf59dc4da16a965ca7e32ea03d1858b","isMergeCommit":false,"messageTitle":"Add Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"7f4da25ff459b66c05d953a9195999d4a305705b","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"becb9487eb9f0a0bf01963dee8ec11436715ea87","isMergeCommit":false,"messageTitle":"add Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"429138a4c74d2c7c25e2684d96da1d473212a0fa","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}},{"hash":"e048d515e5b258a819f4375d44838f78913d4393","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"b15947d7c3766ce335ba7b3e36ecd058a9f51425","isMergeCommit":false,"messageTitle":"update Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":15}}},{"hash":"2f8c14855a9af2eed6e93859a7be93a12a26beb0","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"cf3815e0be0e391e1020e0254c6d6cfee1d00e39","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"353228d8cc6c4489815ed83de4e8dfe9197c8033","isMergeCommit":true,"messageTitle":"Merge pull request #40 from NgZiXin/update-homepage","messageBody":"Update homepage","fileTypesAndContributionMap":{}},{"hash":"466cb03bca29c6384d5255ce7c21f0c7e13cd52f","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"79c34e87122f1415ebaa038f043f40a3635a1705","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"89b8d373f6dc21d7d420f55e2431d5354be7fcea","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f268e60ee7cb17978abc2c40598bdbff37edb961","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"577eb86e21f6980ce697dc813a93b14c299ebccd","isMergeCommit":false,"messageTitle":"add skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0},"other":{"insertions":594,"deletions":0}}},{"hash":"52c2e5d4457777d64b4da9df3732e40092a17463","isMergeCommit":false,"messageTitle":"update filter meetup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6}}},{"hash":"bbc5b1bb07c21b94ac7d0efcc56797cc6c30aac0","isMergeCommit":false,"messageTitle":"add to filter meetup command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9}}},{"hash":"ffcd960b584b071516be9fd2e5911ebb2a78b223","isMergeCommit":false,"messageTitle":"update files to fit stylechecks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"ba99d27835f4370830dee4b84ff5a7f3f09e6b52","isMergeCommit":false,"messageTitle":"update filter meetup command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":0,"deletions":0}}},{"hash":"7863a2645eccab32a4ea1e00db149709b6343daa","isMergeCommit":false,"messageTitle":"continue work on meetup view and filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":10}}},{"hash":"18c6cb164311e7413456fcb33697a87d52590f44","isMergeCommit":false,"messageTitle":"continue work on meetup view and filter","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"3d82ffb2f84db698b78fbc6fbcd0fbfb318c1524","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-filterMeetups","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32df5943a0d672c72553ab0c3383042bc8772545","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-filterMeetups\u0027 of https://github.com/CreditableX/tp into branch-filterMeetups","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a538e6a08a99ac4667683fc942711fdf6f27ca34","isMergeCommit":false,"messageTitle":"change functions to fit new pr","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"9e8bc279840db76d8f34ea9c274aa66ee6c5693b","isMergeCommit":false,"messageTitle":"add javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"fbcbafc6e6395a5d3f049463442e68be6c174f6e","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"677dc7f1789b4f18d260b8eb1e7065e518a7edce","isMergeCommit":false,"messageTitle":"fix broken files from pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"d2a091cb24ed3acb1fbf5a894344d623bc797add","isMergeCommit":false,"messageTitle":"remove bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":594}}},{"hash":"0d3f443049087edd7af63f105b867e46945632c7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from ylchin/view-filter","messageBody":"Enable filtering by person type in view","fileTypesAndContributionMap":{}}]}],"KennyLewi":[{"date":"2024-09-25","commitResults":[{"hash":"5f4252aef03266f61f582c65a864f8e781ebbe9c","isMergeCommit":false,"messageTitle":"Update AboutUs.md for kenny","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"c872dbad300dd8e3cb4d65156f2d8b5567b8a7fc","isMergeCommit":false,"messageTitle":"Update AboutUs.md kenny portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"853a93ef66a3547a36077cfe2a516acdce25357a","isMergeCommit":false,"messageTitle":"Add meetup toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d26db46d191b16ac5da735cb9826c4f6c0d5771a","isMergeCommit":false,"messageTitle":"Add meetup class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":7}}}]},{"date":"2024-10-12","commitResults":[{"hash":"79db899e03bbd87f93eca8d89786fa7a9209adba","isMergeCommit":false,"messageTitle":"Create command to add meetups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":21}}}]}],"ylchin":[{"date":"2024-09-25","commitResults":[{"hash":"4e9723e0e675145501b14a3a6b068b7641c0d964","isMergeCommit":false,"messageTitle":"Remove Does","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":49}}},{"hash":"2eda5ca07c603c1d9364bc7c941f7cd6fe4d7671","isMergeCommit":false,"messageTitle":"Revert \"Remove Does\"","messageBody":"This reverts commit 4e9723e0e675145501b14a3a6b068b7641c0d964.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":0}}},{"hash":"f4c5a63d45a5260cd79fc68ef8132be3b65c0db2","isMergeCommit":false,"messageTitle":"Update Yi Ling\u0027s information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":45}}},{"hash":"7bdbce3414dde3f1dc34cd95e06b5beb4dfa3702","isMergeCommit":false,"messageTitle":"Update newline at end of file for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ef0bfc3384eb8f6394bba388a75d8ca970b98714","isMergeCommit":false,"messageTitle":"Create portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"94a849be2ae9fb330a43476b2fa1e87b65728e28","isMergeCommit":false,"messageTitle":"Update link to portfolio in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"deffcdc7e4862d2a3b015afeb94ce1e88b7e928d","isMergeCommit":false,"messageTitle":"Update target user profile in Developer Guide","messageBody":"The current target user profile does not fully align with\nthe project’s selected direction and vision.\n\nUpdating the target user profile is necessary to ensure\nthat it accurately reflects the intended audience and\nthe project’s goals.\n\nUpdate the target user profile in the developer guide to\nmatch the selected project direction.\n\nThis change ensures that the documentation remains\nconsistent with the project’s objectives and target\naudience, providing clearer guidance to future developers.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"b1b3d74d145e32b6bab2e735e8e3b50e6db747e2","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition does not fully align with the\nproject’s selected direction and updated objectives.\n\nIt needs to be revised to ensure that it accurately communicates\nthe unique benefits and focus of the project.\n\nUpdate the value proposition in the developer guide to reflect\nthe selected project direction.\n\nThis update is necessary to ensure the value proposition is\nconsistent with the project’s current goals and target audience,\nproviding clear messaging to stakeholders.\n\nNo other changes are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e8425b8dbb4955ebd9a32e04947f934bb253236a","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"The current user stories in the developer guide do not fully\nreflect the project’s current scope and direction.\n\nThese stories need to be updated to accurately represent the\nneeds and goals of the target users and to ensure alignment\nwith the project’s objectives.\n\nUpdate the user stories in the developer guide to match the\nselected project direction, refining the use cases and\nrequirements.\n\nThis update is done to maintain consistency and ensure the\ndocumentation reflects the project’s goals, providing clear\nguidance for future development.\n\nNo other modifications are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-02","commitResults":[{"hash":"936636ce2ad40b9c2d1d71540d11760fba7180bc","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition in the developer guide lacks\ndetail and does not fully articulate the project’s unique\noffering to its target users.\n\nA more detailed value proposition is needed to clearly explain\nhow the project stands out and how it benefits users in its\nspecific context.\n\nUpdate the value proposition in the developer guide to include\nmore detail, focusing on the unique advantages of the project\nand the specific needs it addresses for its target audience.\n\nThis update ensures that the developer guide provides a clear\nand compelling explanation of the project’s value, supporting\nfuture development and user engagement.\n\nNo other sections are affected by this change.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa24a1698f3362315d27e8ec4ffab43b2f505b75","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NgZiXin/update-settings","messageBody":"Update settings","fileTypesAndContributionMap":{}},{"hash":"f14273e557521871034f4077cdecbf6386614f8b","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CreditableX/branch-NonFunctionalRequirements","messageBody":"Add Non-Functional Requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"298b9aff2bdcd0613fbd6e37e66fd128119c2070","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"ccf7311c88e4655b71b0d3b0a5b76e5f618941cc","isMergeCommit":false,"messageTitle":"New class PersonFulfilsPredicate determines whether PersonType matches given keyword","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"7b768362e00cff7bf3d89ae501a428e72d2937cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into view-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7309ac61029099d37650a71ca8a0b4f99429a18a","isMergeCommit":false,"messageTitle":"Add ViewCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"e533c3b4d20d25927c73681985ceeefd5fa5bfa8","isMergeCommit":false,"messageTitle":"Enable filtering by person type in view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":5}}},{"hash":"5dec3b22b90744950cad46c23d4ea6fea46b56a9","isMergeCommit":false,"messageTitle":"Catch when keyword for ViewCommand is invalid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"5c08bfd28542b67ab720022f8a37cd4a0211c821","isMergeCommit":false,"messageTitle":"Add toString method for ViewCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"899c15d5789fead665450eb55bb4a4dca936be22","isMergeCommit":false,"messageTitle":"Update tests in ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":62,"deletions":7}}},{"hash":"ef3ec4fbf769c5cf2bea58647372e503a09e2981","isMergeCommit":false,"messageTitle":"remove unused import in ViewCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"db9dc19e6c0e1edac00f5e0e0dade96de7e4871e","isMergeCommit":false,"messageTitle":"Update existing test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":6}}}]}],"NgZiXin":[{"date":"2024-09-25","commitResults":[{"hash":"68cd6880981e3a87432963eaac86a462f6cfdf7e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":46}}},{"hash":"e30dce12d76ef7532158e6deea5a284c3807f18d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from CreditableX/A-UpdateAboutUs","messageBody":"Update AboutUs for Meng","fileTypesAndContributionMap":{}},{"hash":"1ee3fb5842d2a7b8cb1e747ce7d1fa040b9bc755","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":42}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fb7fdb4ba59564968a74dd73b638682a546d338a","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"9ffb77f02fe57e405d1e84d5dae564e435afb08e","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"cc904997ed09e551ae696124f40e4ade5bf9affd","isMergeCommit":false,"messageTitle":"Update repo link","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"c3f238e2913696c1236acc72421f446f9da8e002","isMergeCommit":false,"messageTitle":"Update user guide context to match ABCLI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}},{"hash":"d5646d3c11943608600a418cfd738952193349ca","isMergeCommit":false,"messageTitle":"Update user guide expected features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":2}}},{"hash":"2b5242be20b1feb61a27020c4e3da43c8678c260","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"f1faebcbc9dcaaa5861fa079c084afd3ca3b1f87","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6de8ab4ac07984dc70b350988a6915a1f5d28242","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f3e1273488d7a9396cb1d2a56e212931c9ef6ec9","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ylchin/add-target-user","messageBody":"Update target user profile in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"08031fba066a56cb5d953a8343852dbcf8657186","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ylchin/add-user-stories","messageBody":"Update user stories in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"034e148f5d3a6794ba1bb0f2a24d4b3581e1dc57","isMergeCommit":true,"messageTitle":"Merge pull request #36 from ylchin/add-value-proposition","messageBody":"Update value proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"9409e31e8cb4925c244dd6e762c1923b0a643d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9afb4232b68174aa1aa09c4ad38379d02ccc8df9","isMergeCommit":true,"messageTitle":"Merge pull request #50 from CreditableX/branch-Glossary","messageBody":"Add Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"5a56910589a86149da31aaffc685976ddee6e0f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Solomon0519/tP-UseCases","messageBody":"Edit use cases for DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"30412d29786408363aafe8a3c8fa150849fbcc68","isMergeCommit":true,"messageTitle":"Merge pull request #51 from KennyLewi/add-ui-mockup","messageBody":"Add ui mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"61cfc05f2c3f4ba198080b4505547e6d93f49cc1","isMergeCommit":false,"messageTitle":"Add client type to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":9},"test-code":{"insertions":71,"deletions":33}}},{"hash":"cc5a3635b5f4180411151e69a28bb705a157d307","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":18}}},{"hash":"ceff85ce06dd7123c6d89729569d9f5a9b88eb89","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Solomon0519/tP-UseCases","messageBody":"Touch up use cases for Develop","fileTypesAndContributionMap":{}},{"hash":"bdc00d02b506521f2d878cd218e389514c437c1a","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":4}}},{"hash":"025604b553f109693d433ee8b582797a0be12559","isMergeCommit":false,"messageTitle":"Add Schedule and MeetUp class skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0948cf346dbd131a0a7acc31b8e60f5283efdd7b","isMergeCommit":true,"messageTitle":"Merge pull request #61 from ylchin/refactor-code","messageBody":"Closes #60","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"418e8abe3e4fd115f07dcc9ecb62be4918cfdca9","isMergeCommit":true,"messageTitle":"Merge pull request #65 from KennyLewi/add-meetup-command","messageBody":"Add meetup toString","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"da45caa56c61434831d7cc3d1288d4aeed9daae7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from CreditableX/branch-filterMeetups","messageBody":"Add skeleton for view meetup","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Solomon0519":{"docs":79,"functional-code":0,"test-code":0},"CreditableX":{"docs":62,"functional-code":78,"test-code":7},"KennyLewi":{"docs":52,"functional-code":187,"test-code":0},"ylchin":{"docs":48,"functional-code":118,"test-code":72},"NgZiXin":{"docs":57,"functional-code":300,"test-code":78,"other":3}},"authorContributionVariance":{"Solomon0519":2046.7787,"CreditableX":35867.387,"KennyLewi":1190.1249,"ylchin":3643.9521,"NgZiXin":9348.685},"authorDisplayNameMap":{"Solomon0519":"CS2103T-F13-2 NG E..SWEN","CreditableX":"CS2103T-F13-2 YIOW..OONG","KennyLewi":"CS2103T-F13-2 KENN..LEWI","ylchin":"CS2103T-F13-2 CHIN..LING","NgZiXin":"CS2103T-F13-2 NG Z.. XIN"}} diff --git a/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json index c5c058bd..f1a25f94 100644 --- a/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-1/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp/graph/badge.svg?token\u003dMQKVUQZV24)](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp)","lastModifiedDate":"2024-09-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"# SocialBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":"SocialBook is a desktop application designed to simplify the workflow of social workers in contacting and assisting families in need.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"It allows them to easily prioritize which families need more help, where to get the help, and quickly navigate through family information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"For more detailed documentation, visit the [SocialBook Product Website](https://ay2425s1-cs2103t-f14b-1.github.io/tp/).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"* **Prioritization**: Easily prioritize families who require more urgent assistance.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"* **Task Management**: Manage tasks and follow-up actions for each family in one place.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"* **Family Database**: Organize family contact details and case history efficiently.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"* **Navigation**: Quickly search and filter through families using intuitive commands.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* **Resource Allocation**: Track and document resources allocated to families.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"## Acknowledgements","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"This project is based on the AddressBook Level 3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":19,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"### Clement Oh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/gra7ityic3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/Gra7ityIC3)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LeongWZ"},"content":"### Wei Zhi","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"\u003cimg src\u003d\"images/leongwz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/LeongWZ)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LeongWZ"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LeongWZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":"### Vincent Ng","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/nws321.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/nws321)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"arjun2598"},"content":"### Arjun Kumanan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"arjun2598"},"content":"\u003cimg src\u003d\"images/arjun2598.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"arjun2598"},"content":"[[github](http://github.com/arjun2598)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"### Terence Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"\u003cimg src\u003d\"images/terencewongsextravaganza.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"[[github](https://github.com/TerenceWongsExtravaganza)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":4,"Gra7ityIC3":12,"-":37,"TerenceWongsExtravaganza":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"LeongWZ"},"content":"* is a social worker tasked with helping low-income families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"LeongWZ"},"content":"**Value proposition**: streamlines the process of social workers contacting and assisting families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"arjun2598"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"arjun2598"},"content":"|----------|---------------|--------------------------------------------------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"arjun2598"},"content":"| `* * *` | new user | view the how to guide | familiarise myself with the functionalities of the app. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | add information of different families | keep track of families requiring assistance in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | view the information of different families I have added | retrieve their information more quickly. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | delete the information of a family | remove the data of a family that I no longer need to keep track of. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | edit a family\u0027s information | keep their information up-to-date for future use. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | tag families | manage and organize families according to their needs. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | filter through the list of families | navigate the contact list more efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | sort families | view families in a more suitable order. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | toggle between list view and individual family view | focus on a specific family\u0027s information when I need to. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | create custom command aliases for frequently used commands | execute commands faster and reduce my typing effort. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | archive families that no longer need assistance | keep my contact list focused on active cases. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | see the overall statistics of families based on location | allocate my manpower better to areas with more help needed. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | synchronize the app with my personal calendar | view all my appointments and reminders in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | attach documents or images to family profiles | make all relevant information accessible within each family’s contact details. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | generate and export reports on family progress or case notes | share updates with my team or supervisors efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | share contacts | allow multiple parties to assist the families at once. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"LeongWZ"},"content":"(For all use cases below, the **System** is the `SocialBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LeongWZ"},"content":"**Use case: Add new family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to add a family with the specified details","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook adds the family and displays the newly added family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook detects missing or invalid input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays an error message and prompts the user to try again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LeongWZ"},"content":" * 2a2. User corrects the input and enters the command again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"LeongWZ"},"content":" Steps 2a1-2a2 are repeated until the user enters the correct input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LeongWZ"},"content":"* 2b. SocialBook detects a duplicate family entry.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LeongWZ"},"content":" * 2b1. SocialBook displays an error message showing the duplicated family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"LeongWZ"},"content":"**Use case: View information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to view all families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all families whose info has been added","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LeongWZ"},"content":"**Extensions:** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LeongWZ"},"content":"* 2a. No families have been added to SocialBook yet.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays a message to inform the user that no family has been added by them yet","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LeongWZ"},"content":"**Use case: Delete information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LeongWZ"},"content":"1. User indicates family whose member they want to delete","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all family members in that family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LeongWZ"},"content":"3. User selects and deletes the member","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook removes the member’s details from the display","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LeongWZ"},"content":"* 1a. SocialBook detects no such family exist in the list.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook informs user that no such family exist in the list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"LeongWZ"},"content":"\t ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"LeongWZ"},"content":"* 3a. User selects the primary contact of the family to be deleted.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook informs user they cannot delete primary contact and to swap it to someone else if they wish to do so","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"LeongWZ"},"content":"**Use case: Display command manual** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LeongWZ"},"content":"1. User keys in command to open command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"LeongWZ"},"content":"3. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"LeongWZ"},"content":"* 1a. User chooses more detailed manual.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook displays detailed command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"LeongWZ"},"content":" * 1a2. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"LeongWZ"},"content":" * 1a3. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"LeongWZ"},"content":"**Use case: Edit existing information of a family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"LeongWZ"},"content":"1. User chooses which information fields to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"LeongWZ"},"content":"2. User only enters the fields he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"LeongWZ"},"content":"3. SocialBook only updates the fields which user had updated and displays all information about the family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook suggests a list of fields as user is typing input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"LeongWZ"},"content":" * 2a1. User enters one field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"LeongWZ"},"content":" * 2a2. SocialBook shows possible fields to be updated","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"LeongWZ"},"content":" * 2a3. User types finishes the field he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"LeongWZ"},"content":" * 2a4. SocialBook stops showing possible fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"LeongWZ"},"content":" * 2a5. User enters updated value","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"LeongWZ"},"content":" If User chooses to update other fields, repeat step 2a1-2a4.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"LeongWZ"},"content":" Otherwise, use case resumes from step 3.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"LeongWZ"},"content":" * 3a. SocialBook detects an error in the entered data.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook should not update any fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"LeongWZ"},"content":" * 3a2. SocialBook displays errors encountered with respect to the field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"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","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"nws321"},"content":"4. The system should be usable by a novice and does not require prior training.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"nws321"},"content":"5. Data that is to be deleted from the system is removed completely and not stored elsewhere.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"nws321"},"content":"6. The project is expected to adhere to the breadth-first iterative development.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"nws321"},"content":"7. Each command should take at most 10 seconds to executed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"nws321"},"content":"* **API**: Application programming interfaces, which defines the standards and protocols that allow different software components to communicate with one another.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"nws321"},"content":"* **Custom command aliases**: Alternative command names that work the same if called as the actual command name.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"nws321"},"content":"* **Breadth-first iterative development**: Evolves all major components and functionality areas in parallel, producing a working product at the end of each iteration","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"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","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"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","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"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","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"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","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"arjun2598":18,"LeongWZ":118,"-":375,"nws321":7}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eSocialBook\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14b-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":65,"TerenceWongsExtravaganza":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"arjun2598"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":2,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"arjun2598"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"arjun2598":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" .append(\"; Priority: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" .append(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Remark: \").append(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":15,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_PRIORITY + \"PRIORITY \u003d LOW] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_REMARK + \"Promises to pay back next week. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nws321"},"content":" /* Skeleton for deleting multiple index at once","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nws321"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nws321"},"content":" + \"Parameters: INDEXES (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nws321"},"content":" + \"Example: \" + COMMAND_WORD + \" 1, 2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nws321"},"content":" private final Index[] targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted People: %s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nws321"},"content":" public DeleteCommand(Index... targetIndexes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"nws321"},"content":" this.targetIndexes \u003d targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nws321"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nws321"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"nws321"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nws321"},"content":" String s \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c targetIndexes.size(); i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nws321"},"content":" if (targetIndexes[i].getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nws321"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nws321"},"content":" Person personsToDelete\u003d lastShownList.get(targetIndexes[i].getZeroBased());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nws321"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nws321"},"content":" s +\u003d Messages.format(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nws321"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, s));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nws321"},"content":" CONTINUE FROM HERE","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nws321"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nws321"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nws321"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nws321"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nws321"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nws321"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nws321"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nws321"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nws321"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nws321"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nws321"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nws321"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":69,"nws321":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LeongWZ"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" Priority updatedPriority \u003d editPersonDescriptor.getPriority().orElse(personToEdit.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" updatedPriority, updatedRemark, updatedTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Gra7ityIC3"},"content":" setPriority(toCopy.priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Gra7ityIC3"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LeongWZ"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Gra7ityIC3"},"content":" public void setPriority(Priority priority) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cPriority\u003e getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Gra7ityIC3"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":3,"Gra7ityIC3":28,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/ManualCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" * Format full instructions for every command for display.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"public class ManualCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String COMMAND_WORD \u003d \"manual\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows the user manual.\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"Manual command not implemented\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String SHOWING_MANUAL_MESSAGE \u003d \"Opened user manual.\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public ManualCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"TerenceWongsExtravaganza":27}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_PRIORITY, PREFIX_REMARK, PREFIX_TAG);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority \u003d ParserUtil.parsePriority(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" Person person \u003d new Person(name, phone, email, address, priority, remark, tagList);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":12,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.ManualCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" case ManualCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" return new ManualCommand();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":86,"TerenceWongsExtravaganza":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"pri/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":2,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nws321"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nws321"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nws321"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nws321"},"content":" int size \u003d args.split(\",\").size();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nws321"},"content":" Index[] indexArray \u003d new Index[size];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nws321"},"content":" ParserUtil.parseIndex(indexArray[i])[i];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nws321"},"content":" return new DeleteCommand(indexArray);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nws321"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nws321"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nws321"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":29,"nws321":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LeongWZ"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LeongWZ"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LeongWZ"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LeongWZ"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"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","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":6,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Gra7ityIC3"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String priority} into a {@code Priority}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code priority} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" public static Priority parsePriority(String priority) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedPriority \u003d priority.trim().toUpperCase();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return Priority.valueOf(trimmedPriority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" return new Remark(remark.trim());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":32,"-":119}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" // TO BE IMPLEMENTED","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"arjun2598"},"content":" // Updates the order in which the filtered contact list is sorted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"arjun2598"},"content":" // void updateSortingOrder(String criterion); - Can use switch statements for criteria to sort by","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":6,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"arjun2598"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"arjun2598"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"arjun2598"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"arjun2598"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons); // sortedPersons is updated along with filteredPersons","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"arjun2598"},"content":" sortedPersons.setComparator(Comparator.comparing(Person::getPriority)); // sort by descending priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"arjun2598"},"content":" return sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":10,"-":148}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private final Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":" private final Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" return priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" return remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 priority.equals(otherPerson.priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":116}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s priority in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"public enum Priority {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" HIGH, MEDIUM, LOW;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority should be either HIGH, MEDIUM, or LOW\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"public class Remark {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":" public final String value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":" * @param remark An optional remark.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":" value \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" return value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), Priority.HIGH, new Remark(\"Likes baseball\"),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), Priority.HIGH, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":54}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private final String priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private final String remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" .toList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" final Priority modelPriority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" modelPriority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" final Remark modelRemark \u003d new Remark(remark \u003d\u003d null ? \"\" : remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPriority, modelRemark, modelTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":30,"-":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).toList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"arjun2598"},"content":" personListPanel \u003d new PersonListPanel(logic.getSortedPersonList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"arjun2598":1,"-":195}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Label id;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" private Label priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" private Label remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":" priority.getStyleClass().add(switch (person.getPriority()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" case HIGH -\u003e \"priority-high\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" case MEDIUM -\u003e \"priority-medium\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" case LOW -\u003e \"priority-low\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" priority.setText(person.getPriority().name());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setText(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setManaged(!value.isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":57}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Gra7ityIC3"},"content":"#priority {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-padding: 0 10;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Gra7ityIC3"},"content":".priority-high {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #E53935;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #ef9a9a;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Gra7ityIC3"},"content":".priority-medium {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #FB8C00;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #FFCC80;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Gra7ityIC3"},"content":".priority-low {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #43A047;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #A5D6A7;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":23,"-":352}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"priority\" text\u003d\"\\$priority\"\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cInsets left\u003d\"4\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"arjun2598"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"arjun2598":5,"-":204}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"HIGH\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"MEDIUM\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_AMY \u003d \"Loves Taylor Swift.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_BOB \u003d \"Supports Manchester United.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String INVALID_PRIORITY_DESC \u003d \" \" + PREFIX_PRIORITY + \"CRITICAL\"; // no such priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"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","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":128}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LeongWZ"},"content":" private void execute_specifiedRemarkField_shouldModifyRemark(String remarkString) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LeongWZ"},"content":" Remark remark \u003d new Remark(remarkString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" Person personToBeEdited \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" Person personToBeExpected \u003d new Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getName(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getPhone(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getEmail(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getAddress(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"arjun2598"},"content":" personToBeEdited.getPriority(),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LeongWZ"},"content":" remark,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getTags());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LeongWZ"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LeongWZ"},"content":" .withRemark(remark.value)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LeongWZ"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LeongWZ"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LeongWZ"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LeongWZ"},"content":" expectedModel.setPerson(personToBeEdited, personToBeExpected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LeongWZ"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LeongWZ"},"content":" Messages.format(personToBeExpected));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LeongWZ"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"This is a remark!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedEmptyRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":1,"LeongWZ":39,"-":184}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getPriority().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":70}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRIORITY_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple priorities","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, PRIORITY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple remarks","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" validExpectedPersonString + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_AMY + PRIORITY_DESC_AMY + REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_PRIORITY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRIORITY_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Gra7ityIC3"},"content":" // zero tags and no remark","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":" + INVALID_PRIORITY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":48,"-":176}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LeongWZ"},"content":" // remark","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LeongWZ"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LeongWZ"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LeongWZ"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LeongWZ"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LeongWZ":8,"-":208}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPhone() + \", email\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getAddress() + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPriority() + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getRemark() + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":8,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String INVALID_PRIORITY \u003d \"CRITICAL\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" INVALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d Priority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" null, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, invalidTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":44,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setPriority(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LeongWZ":9,"Gra7ityIC3":2,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d Priority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" return this;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(name, phone, email, address, priority, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":31,"-":91}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" person.getTags().forEach(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withPhone(\"94351253\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"alice@example.com\").withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"MEDIUM\").withRemark(\"She likes pygmy hippos.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"johnd@example.com\").withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"HIGH\").withRemark(\"Promises to pay back next week.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withPriority(VALID_PRIORITY_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" .withRemark(VALID_REMARK_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":10,"-":68}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-1/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp/graph/badge.svg?token\u003dMQKVUQZV24)](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp)","lastModifiedDate":"2024-09-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"# SocialBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":"SocialBook is a desktop application designed to simplify the workflow of social workers in contacting and assisting families in need.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"It allows them to easily prioritize which families need more help, where to get the help, and quickly navigate through family information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"For more detailed documentation, visit the [SocialBook Product Website](https://ay2425s1-cs2103t-f14b-1.github.io/tp/).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"* **Prioritization**: Easily prioritize families who require more urgent assistance.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"* **Task Management**: Manage tasks and follow-up actions for each family in one place.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"* **Family Database**: Organize family contact details and case history efficiently.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"* **Navigation**: Quickly search and filter through families using intuitive commands.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* **Resource Allocation**: Track and document resources allocated to families.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"## Acknowledgements","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"This project is based on the AddressBook Level 3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":19,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"### Clement Oh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/gra7ityic3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/Gra7ityIC3)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LeongWZ"},"content":"### Wei Zhi","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"\u003cimg src\u003d\"images/leongwz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/LeongWZ)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LeongWZ"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LeongWZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":"### Vincent Ng","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/nws321.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/nws321)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"arjun2598"},"content":"### Arjun Kumanan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"arjun2598"},"content":"\u003cimg src\u003d\"images/arjun2598.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"arjun2598"},"content":"[[github](http://github.com/arjun2598)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"### Terence Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"\u003cimg src\u003d\"images/terencewongsextravaganza.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"[[github](https://github.com/TerenceWongsExtravaganza)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":4,"Gra7ityIC3":12,"-":37,"TerenceWongsExtravaganza":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"LeongWZ"},"content":"* is a social worker tasked with helping low-income families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"LeongWZ"},"content":"**Value proposition**: streamlines the process of social workers contacting and assisting families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"arjun2598"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"arjun2598"},"content":"|----------|---------------|--------------------------------------------------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"arjun2598"},"content":"| `* * *` | new user | view the how to guide | familiarise myself with the functionalities of the app. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | add information of different families | keep track of families requiring assistance in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | view the information of different families I have added | retrieve their information more quickly. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | delete the information of a family | remove the data of a family that I no longer need to keep track of. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | edit a family\u0027s information | keep their information up-to-date for future use. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | tag families | manage and organize families according to their needs. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | filter through the list of families | navigate the contact list more efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | sort families | view families in a more suitable order. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | toggle between list view and individual family view | focus on a specific family\u0027s information when I need to. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | create custom command aliases for frequently used commands | execute commands faster and reduce my typing effort. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | archive families that no longer need assistance | keep my contact list focused on active cases. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | see the overall statistics of families based on location | allocate my manpower better to areas with more help needed. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | synchronize the app with my personal calendar | view all my appointments and reminders in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | attach documents or images to family profiles | make all relevant information accessible within each family’s contact details. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | generate and export reports on family progress or case notes | share updates with my team or supervisors efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | share contacts | allow multiple parties to assist the families at once. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"LeongWZ"},"content":"(For all use cases below, the **System** is the `SocialBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LeongWZ"},"content":"**Use case: Add new family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to add a family with the specified details","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook adds the family and displays the newly added family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook detects missing or invalid input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays an error message and prompts the user to try again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LeongWZ"},"content":" * 2a2. User corrects the input and enters the command again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"LeongWZ"},"content":" Steps 2a1-2a2 are repeated until the user enters the correct input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LeongWZ"},"content":"* 2b. SocialBook detects a duplicate family entry.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LeongWZ"},"content":" * 2b1. SocialBook displays an error message showing the duplicated family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"LeongWZ"},"content":"**Use case: View information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to view all families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all families whose info has been added","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LeongWZ"},"content":"**Extensions:** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LeongWZ"},"content":"* 2a. No families have been added to SocialBook yet.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays a message to inform the user that no family has been added by them yet","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LeongWZ"},"content":"**Use case: Delete information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LeongWZ"},"content":"1. User indicates family whose member they want to delete","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all family members in that family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LeongWZ"},"content":"3. User selects and deletes the member","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook removes the member’s details from the display","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LeongWZ"},"content":"* 1a. SocialBook detects no such family exist in the list.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook informs user that no such family exist in the list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"LeongWZ"},"content":"\t ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"LeongWZ"},"content":"* 3a. User selects the primary contact of the family to be deleted.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook informs user they cannot delete primary contact and to swap it to someone else if they wish to do so","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"LeongWZ"},"content":"**Use case: Display command manual** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LeongWZ"},"content":"1. User keys in command to open command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"LeongWZ"},"content":"3. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"LeongWZ"},"content":"* 1a. User chooses more detailed manual.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook displays detailed command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"LeongWZ"},"content":" * 1a2. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"LeongWZ"},"content":" * 1a3. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"LeongWZ"},"content":"**Use case: Edit existing information of a family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"LeongWZ"},"content":"1. User chooses which information fields to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"LeongWZ"},"content":"2. User only enters the fields he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"LeongWZ"},"content":"3. SocialBook only updates the fields which user had updated and displays all information about the family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook suggests a list of fields as user is typing input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"LeongWZ"},"content":" * 2a1. User enters one field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"LeongWZ"},"content":" * 2a2. SocialBook shows possible fields to be updated","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"LeongWZ"},"content":" * 2a3. User types finishes the field he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"LeongWZ"},"content":" * 2a4. SocialBook stops showing possible fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"LeongWZ"},"content":" * 2a5. User enters updated value","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"LeongWZ"},"content":" If User chooses to update other fields, repeat step 2a1-2a4.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"LeongWZ"},"content":" Otherwise, use case resumes from step 3.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"LeongWZ"},"content":" * 3a. SocialBook detects an error in the entered data.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook should not update any fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"LeongWZ"},"content":" * 3a2. SocialBook displays errors encountered with respect to the field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"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","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"nws321"},"content":"4. The system should be usable by a novice and does not require prior training.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"nws321"},"content":"5. Data that is to be deleted from the system is removed completely and not stored elsewhere.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"nws321"},"content":"6. The project is expected to adhere to the breadth-first iterative development.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"nws321"},"content":"7. Each command should take at most 10 seconds to executed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"nws321"},"content":"* **API**: Application programming interfaces, which defines the standards and protocols that allow different software components to communicate with one another.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"nws321"},"content":"* **Custom command aliases**: Alternative command names that work the same if called as the actual command name.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"nws321"},"content":"* **Breadth-first iterative development**: Evolves all major components and functionality areas in parallel, producing a working product at the end of each iteration","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"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","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"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","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"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","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"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","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"arjun2598":18,"LeongWZ":118,"-":375,"nws321":7}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eSocialBook\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14b-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":65,"TerenceWongsExtravaganza":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" .append(\"; Priority: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" .append(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Remark: \").append(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":15,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_PRIORITY + \"PRIORITY \u003d LOW] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_REMARK + \"Promises to pay back next week. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nws321"},"content":" /* Skeleton for deleting multiple index at once","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nws321"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nws321"},"content":" + \"Parameters: INDEXES (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nws321"},"content":" + \"Example: \" + COMMAND_WORD + \" 1, 2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nws321"},"content":" private final Index[] targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted People: %s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nws321"},"content":" public DeleteCommand(Index... targetIndexes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"nws321"},"content":" this.targetIndexes \u003d targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nws321"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nws321"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"nws321"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nws321"},"content":" String s \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c targetIndexes.size(); i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nws321"},"content":" if (targetIndexes[i].getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nws321"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nws321"},"content":" Person personsToDelete\u003d lastShownList.get(targetIndexes[i].getZeroBased());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nws321"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nws321"},"content":" s +\u003d Messages.format(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nws321"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, s));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nws321"},"content":" CONTINUE FROM HERE","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nws321"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nws321"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nws321"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nws321"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nws321"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nws321"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nws321"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nws321"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nws321"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nws321"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nws321"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nws321"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":69,"nws321":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LeongWZ"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" Priority updatedPriority \u003d editPersonDescriptor.getPriority().orElse(personToEdit.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" updatedPriority, updatedRemark, updatedTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Gra7ityIC3"},"content":" setPriority(toCopy.priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Gra7ityIC3"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LeongWZ"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Gra7ityIC3"},"content":" public void setPriority(Priority priority) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cPriority\u003e getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Gra7ityIC3"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":3,"Gra7ityIC3":28,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/ManualCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" * Format full instructions for every command for display.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"public class ManualCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String COMMAND_WORD \u003d \"manual\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows the user manual.\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"Manual command not implemented\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String SHOWING_MANUAL_MESSAGE \u003d \"Opened user manual.\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public ManualCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"TerenceWongsExtravaganza":27}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_PRIORITY, PREFIX_REMARK, PREFIX_TAG);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority \u003d ParserUtil.parsePriority(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" Person person \u003d new Person(name, phone, email, address, priority, remark, tagList);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":12,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.ManualCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" case ManualCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" return new ManualCommand();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":86,"TerenceWongsExtravaganza":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"pri/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":2,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nws321"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nws321"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nws321"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nws321"},"content":" int size \u003d args.split(\",\").size();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nws321"},"content":" Index[] indexArray \u003d new Index[size];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nws321"},"content":" ParserUtil.parseIndex(indexArray[i])[i];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nws321"},"content":" return new DeleteCommand(indexArray);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nws321"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nws321"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nws321"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":29,"nws321":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LeongWZ"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LeongWZ"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LeongWZ"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LeongWZ"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"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","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":6,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Gra7ityIC3"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String priority} into a {@code Priority}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code priority} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" public static Priority parsePriority(String priority) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedPriority \u003d priority.trim().toUpperCase();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return Priority.valueOf(trimmedPriority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" return new Remark(remark.trim());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":32,"-":119}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":" // TO BE IMPLEMENTED","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":" // Updates the order in which the filtered contact list is sorted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" // void updateSortingOrder(String criterion); - Can use switch statements for criteria to sort by","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"arjun2598"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"arjun2598"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"arjun2598"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"arjun2598"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons); // sortedPersons is updated along with filteredPersons","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"arjun2598"},"content":" sortedPersons.setComparator(Comparator.comparing(Person::getPriority)); // sort by descending priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"arjun2598"},"content":" return sortedPersons; // sortedPersons wraps filteredPersons and sorts it, so just return sorted version","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":6,"-":146}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private final Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":" private final Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" return priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" return remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 priority.equals(otherPerson.priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":116}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s priority in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"public enum Priority {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" HIGH, MEDIUM, LOW;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority should be either HIGH, MEDIUM, or LOW\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"public class Remark {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":" public final String value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":" * @param remark An optional remark.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":" value \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" return value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), Priority.HIGH, new Remark(\"Likes baseball\"),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), Priority.HIGH, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":54}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private final String priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private final String remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" .toList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" final Priority modelPriority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" modelPriority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" final Remark modelRemark \u003d new Remark(remark \u003d\u003d null ? \"\" : remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPriority, modelRemark, modelTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":30,"-":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).toList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Label id;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" private Label priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" private Label remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":" priority.getStyleClass().add(switch (person.getPriority()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" case HIGH -\u003e \"priority-high\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" case MEDIUM -\u003e \"priority-medium\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" case LOW -\u003e \"priority-low\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" priority.setText(person.getPriority().name());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setText(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setManaged(!value.isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":57}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Gra7ityIC3"},"content":"#priority {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-padding: 0 10;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Gra7ityIC3"},"content":".priority-high {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #E53935;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #ef9a9a;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Gra7ityIC3"},"content":".priority-medium {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #FB8C00;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #FFCC80;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Gra7ityIC3"},"content":".priority-low {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #43A047;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #A5D6A7;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":23,"-":352}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"priority\" text\u003d\"\\$priority\"\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cInsets left\u003d\"4\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"HIGH\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"MEDIUM\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_AMY \u003d \"Loves Taylor Swift.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_BOB \u003d \"Supports Manchester United.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String INVALID_PRIORITY_DESC \u003d \" \" + PREFIX_PRIORITY + \"CRITICAL\"; // no such priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"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","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":128}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LeongWZ"},"content":" private void execute_specifiedRemarkField_shouldModifyRemark(String remarkString) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LeongWZ"},"content":" Remark remark \u003d new Remark(remarkString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" Person personToBeEdited \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" Person personToBeExpected \u003d new Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getName(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getPhone(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getEmail(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getAddress(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"arjun2598"},"content":" personToBeEdited.getPriority(),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LeongWZ"},"content":" remark,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getTags());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LeongWZ"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LeongWZ"},"content":" .withRemark(remark.value)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LeongWZ"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LeongWZ"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LeongWZ"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LeongWZ"},"content":" expectedModel.setPerson(personToBeEdited, personToBeExpected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LeongWZ"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LeongWZ"},"content":" Messages.format(personToBeExpected));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LeongWZ"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"This is a remark!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedEmptyRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"arjun2598"},"content":" Person personInList \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased()); // second in list","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"arjun2598"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON); // filters list to now only contain first person","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":39,"-":181}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getPriority().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":70}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRIORITY_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple priorities","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, PRIORITY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple remarks","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" validExpectedPersonString + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_AMY + PRIORITY_DESC_AMY + REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_PRIORITY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRIORITY_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Gra7ityIC3"},"content":" // zero tags and no remark","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":" + INVALID_PRIORITY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":48,"-":176}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LeongWZ"},"content":" // remark","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LeongWZ"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LeongWZ"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LeongWZ"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LeongWZ"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LeongWZ":8,"-":208}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPhone() + \", email\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getAddress() + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPriority() + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getRemark() + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":8,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String INVALID_PRIORITY \u003d \"CRITICAL\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" INVALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d Priority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" null, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, invalidTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":44,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setPriority(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LeongWZ":9,"Gra7ityIC3":2,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d Priority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" return this;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(name, phone, email, address, priority, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":31,"-":91}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" person.getTags().forEach(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withPhone(\"94351253\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"alice@example.com\").withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"MEDIUM\").withRemark(\"She likes pygmy hippos.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"johnd@example.com\").withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"HIGH\").withRemark(\"Promises to pay back next week.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withPriority(VALID_PRIORITY_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" .withRemark(VALID_REMARK_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":10,"-":68}}] diff --git a/AY2425S1-CS2103T-F14b-1_tp_master/commits.json b/AY2425S1-CS2103T-F14b-1_tp_master/commits.json index 6431836c..b4bb2fee 100644 --- a/AY2425S1-CS2103T-F14b-1_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"arjun2598":[{"date":"2024-10-02","commitResults":[{"hash":"e5a6e2878be13066dd54e0b42db1187d2f4ab3a3","isMergeCommit":false,"messageTitle":"Add Arjun information to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e0a7ec3b12f7ab09398fbb39d68a7140ee50652b","isMergeCommit":false,"messageTitle":"Change position of my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"0d6ece821025ed874a8551f95174770a7f3fe44d","isMergeCommit":true,"messageTitle":"Merge pull request #19 from TerenceWongsExtravaganza/Add_Terence_AboutUs","messageBody":"Update Terence details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"b71c214b83846dde01108b98ea53805bf3be0c45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-arjun2598-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d8ed6aa596131445014e642e1fbc31b3fa960a02","isMergeCommit":true,"messageTitle":"Merge pull request #29 from TerenceWongsExtravaganza/Branch-Update-Site_Settings","messageBody":"Update site-wide setting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"4e9136c8f313c5f3e5eca20b6e44b0b3c0888e5e","isMergeCommit":false,"messageTitle":"Edit user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"1b79520d1f74114c9710783e53a456f43287977d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from TerenceWongsExtravaganza/branch_add_manual_command","messageBody":"Add manual command to parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"072fd3b21573c7676270ff53bcc531286a3b5d43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into auto-sort-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf898e9b320b0853e5331f85037c5440c32eaceb","isMergeCommit":false,"messageTitle":"Auto sort contacts by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"test-code":{"insertions":6,"deletions":0}}}]}],"LeongWZ":[{"date":"2024-10-01","commitResults":[{"hash":"cb4c005275123a99adf8dc17fa218c36f68ebaea","isMergeCommit":false,"messageTitle":"Add leongwz to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"17fc32feabc65646c1ea01a24cdad9e5390ad767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp into branch-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d43f848f14d4ae60c202244a62b176f3b029d332","isMergeCommit":true,"messageTitle":"Merge pull request #21 from nws321/branch-add-vincent-details","messageBody":"Update Vincent\u0027s Details In AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"130331c5c4dc2ea79956cac9de163825b556ec78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"adfdaf55235b785db413f7f46f04c100885ff4ba","isMergeCommit":false,"messageTitle":"Add User Profile and Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f42a79de91141365c498fedd81a91507755f0793","isMergeCommit":false,"messageTitle":"Add use cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":121,"deletions":14}}},{"hash":"74beb3fd94029023eec7d162c45849e4bff31d2b","isMergeCommit":true,"messageTitle":"Merge pull request #36 from nws321/branch-add-nfr-and-glossary","messageBody":"Update non-functional requirements and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"912ae7705eb636ff5dda446038541910ecc262e8","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Gra7ityIC3/add-remark-field","messageBody":"Add remark field to Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"45ca896b55b1f734fdfaaf7a3f03df291b8eccb9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0ce77283894054a8a4bad352344a895961d6dbf","isMergeCommit":false,"messageTitle":"Support editing of remark field using EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":48,"deletions":0}}},{"hash":"4965dd5fa37c5fa1b5c4b4eee1e5161c409886c0","isMergeCommit":false,"messageTitle":"Include remark field in EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":21}}},{"hash":"fe1bfac457285b885c5989545c5c2cf62603203a","isMergeCommit":false,"messageTitle":"Remove wildcard import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d72d945b572df8a5fb636fbf7672d409adbd09f1","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Gra7ityIC3/add-priority-field","messageBody":"Add priority field to Person class","fileTypesAndContributionMap":{}}]}],"Gra7ityIC3":[{"date":"2024-10-02","commitResults":[{"hash":"9df661db0ec6e1b05bf421ad243ca14f4dc25364","isMergeCommit":false,"messageTitle":"Add Clement\u0027s details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"48a02d82284f7281c841055cdd99f6bfa0da30bb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from LeongWZ/branch-UpdateAboutUs","messageBody":"Add leongwz to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d384ccb231374ca576cbd230165db90b91a5bdf5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-clement-aboutus","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"7184ce21384c903245746395395eab2d13d88545","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"3504c6b0a5789e7f4509bcab9354fcf150312700","isMergeCommit":true,"messageTitle":"Merge pull request #33 from LeongWZ/branch-AddUserProfileAndValueProp","messageBody":"Update user profile and value proposition in DG","fileTypesAndContributionMap":{}},{"hash":"efe3111d748b5c0372ce345a71d8bbd8b4ba522d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LeongWZ/branch-AddUseCases","messageBody":"Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"3f888618dd676922899667e714f891c0aa54904e","isMergeCommit":false,"messageTitle":"Add remark field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":18},"test-code":{"insertions":38,"deletions":15}}}]},{"date":"2024-10-07","commitResults":[{"hash":"adc1febcb8863f0315d6f5861aed567063afd475","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":24,"deletions":9}}}]},{"date":"2024-10-08","commitResults":[{"hash":"501d076167d8b8fb2faf78672b06e1d6b9c2ace3","isMergeCommit":false,"messageTitle":"Add priority field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":35},"test-code":{"insertions":83,"deletions":32}}}]},{"date":"2024-10-10","commitResults":[{"hash":"80bfb6a02bf56c452653ebaf546da5414da2f38d","isMergeCommit":false,"messageTitle":"Add CSS styles for priority labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"6ef2bdc8abd2a83b94f29d215b10c1fe70b93603","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":31}}},{"hash":"e52223e72b849f1344d832ea092b73a6a01d340d","isMergeCommit":true,"messageTitle":"Merge pull request #47 from LeongWZ/branch-EditRemark","messageBody":"Support editing of remark field using EditCommand","fileTypesAndContributionMap":{}},{"hash":"268e380e18a39d71f024a73511bc80f922173d1d","isMergeCommit":true,"messageTitle":"Merge pull request #50 from nws321/branch-skeleton-code-delete-multiple","messageBody":"Create skeleton code for multiple delete function","fileTypesAndContributionMap":{}}]}],"TerenceWongsExtravaganza":[{"date":"2024-10-02","commitResults":[{"hash":"47fe1cea6f50b1a031e5e507eccf75da87e3d419","isMergeCommit":false,"messageTitle":"Update Terence details in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-03","commitResults":[{"hash":"40356087009c7baba7b3d1e1b501b47ab5dacb14","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Gra7ityIC3/add-clement-aboutus","messageBody":"Add Clement\u0027s details to AboutUs","fileTypesAndContributionMap":{}},{"hash":"a7d32d71fec2fbd6509bcd583b916f2ef74bc616","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Gra7ityIC3/update-readme","messageBody":"Update README page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"ef802fc63270fdcfb21dd351dba5419a4b19df10","isMergeCommit":false,"messageTitle":"Update site-wide setting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-08","commitResults":[{"hash":"b6022542df2b533adc58ebfcbc5d2990f12cae6c","isMergeCommit":false,"messageTitle":"Add manual command to parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"3cb47b6d818f8355d3624c62f1f95d2ca400f46e","isMergeCommit":false,"messageTitle":"Fix styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]}],"nws321":[{"date":"2024-10-02","commitResults":[{"hash":"759e25f96fc5e6b7973d0d6fb5973136a73a5f8d","isMergeCommit":false,"messageTitle":"Update Vincent\u0027s Details In AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"91644cdf3de02cd84ff60eb21a1009a170509c17","isMergeCommit":true,"messageTitle":"Merge pull request #15 from arjun2598/add-arjun2598-AboutUs","messageBody":"Add arjun2598 to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c1537e17b71329cd29e8275db97fcfe22a882450","isMergeCommit":true,"messageTitle":"Merge pull request #31 from arjun2598/add-user-stories","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}},{"hash":"f569cca0a15982b5e6394c7cb7f5da620fbef673","isMergeCommit":false,"messageTitle":"Update non-functional requirements and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"56f5fa684f6e58bfec9dbf1fd7d63f4126a21548","isMergeCommit":false,"messageTitle":"Create skeleton code for multiple delete function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"440cee1eb0b66ae58e9501d4776fc7492fbcd63b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from arjun2598/auto-sort-list","messageBody":"Auto sort list","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"arjun2598":{"docs":22,"functional-code":24,"test-code":6},"LeongWZ":{"docs":122,"functional-code":9,"test-code":56},"Gra7ityIC3":{"docs":31,"functional-code":261,"test-code":160},"TerenceWongsExtravaganza":{"docs":5,"functional-code":31,"test-code":0},"nws321":{"docs":7,"functional-code":72,"test-code":0}},"authorContributionVariance":{"arjun2598":86.84808,"LeongWZ":1358.2357,"Gra7ityIC3":5234.2354,"TerenceWongsExtravaganza":62.6576,"nws321":235.80043},"authorDisplayNameMap":{"arjun2598":"CS2103T-F14b-1 ARJU..ANAN","LeongWZ":"CS2103T-F14b-1 LEON.. ZHI","Gra7ityIC3":"CS2103T-F14b-1 OH Y..MENT","TerenceWongsExtravaganza":"CS2103T-F14b-1 TERE.. WEN","nws321":"CS2103T-F14b-1 NG W..CENT"}} +{"authorDailyContributionsMap":{"arjun2598":[{"date":"2024-10-02","commitResults":[{"hash":"e5a6e2878be13066dd54e0b42db1187d2f4ab3a3","isMergeCommit":false,"messageTitle":"Add Arjun information to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e0a7ec3b12f7ab09398fbb39d68a7140ee50652b","isMergeCommit":false,"messageTitle":"Change position of my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"0d6ece821025ed874a8551f95174770a7f3fe44d","isMergeCommit":true,"messageTitle":"Merge pull request #19 from TerenceWongsExtravaganza/Add_Terence_AboutUs","messageBody":"Update Terence details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"b71c214b83846dde01108b98ea53805bf3be0c45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-arjun2598-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d8ed6aa596131445014e642e1fbc31b3fa960a02","isMergeCommit":true,"messageTitle":"Merge pull request #29 from TerenceWongsExtravaganza/Branch-Update-Site_Settings","messageBody":"Update site-wide setting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"4e9136c8f313c5f3e5eca20b6e44b0b3c0888e5e","isMergeCommit":false,"messageTitle":"Edit user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"1b79520d1f74114c9710783e53a456f43287977d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from TerenceWongsExtravaganza/branch_add_manual_command","messageBody":"Add manual command to parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"072fd3b21573c7676270ff53bcc531286a3b5d43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into auto-sort-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf898e9b320b0853e5331f85037c5440c32eaceb","isMergeCommit":false,"messageTitle":"Auto sort contacts by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"655221d2c27b1b56b7cbfe6812e4493a299ad171","isMergeCommit":false,"messageTitle":"Fix bug with sorting such that indices match for other commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":18},"test-code":{"insertions":3,"deletions":8}}}]}],"LeongWZ":[{"date":"2024-10-01","commitResults":[{"hash":"cb4c005275123a99adf8dc17fa218c36f68ebaea","isMergeCommit":false,"messageTitle":"Add leongwz to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"17fc32feabc65646c1ea01a24cdad9e5390ad767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp into branch-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d43f848f14d4ae60c202244a62b176f3b029d332","isMergeCommit":true,"messageTitle":"Merge pull request #21 from nws321/branch-add-vincent-details","messageBody":"Update Vincent\u0027s Details In AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"130331c5c4dc2ea79956cac9de163825b556ec78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"adfdaf55235b785db413f7f46f04c100885ff4ba","isMergeCommit":false,"messageTitle":"Add User Profile and Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f42a79de91141365c498fedd81a91507755f0793","isMergeCommit":false,"messageTitle":"Add use cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":121,"deletions":14}}},{"hash":"74beb3fd94029023eec7d162c45849e4bff31d2b","isMergeCommit":true,"messageTitle":"Merge pull request #36 from nws321/branch-add-nfr-and-glossary","messageBody":"Update non-functional requirements and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"912ae7705eb636ff5dda446038541910ecc262e8","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Gra7ityIC3/add-remark-field","messageBody":"Add remark field to Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"45ca896b55b1f734fdfaaf7a3f03df291b8eccb9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0ce77283894054a8a4bad352344a895961d6dbf","isMergeCommit":false,"messageTitle":"Support editing of remark field using EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":48,"deletions":0}}},{"hash":"4965dd5fa37c5fa1b5c4b4eee1e5161c409886c0","isMergeCommit":false,"messageTitle":"Include remark field in EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":21}}},{"hash":"fe1bfac457285b885c5989545c5c2cf62603203a","isMergeCommit":false,"messageTitle":"Remove wildcard import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d72d945b572df8a5fb636fbf7672d409adbd09f1","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Gra7ityIC3/add-priority-field","messageBody":"Add priority field to Person class","fileTypesAndContributionMap":{}}]}],"Gra7ityIC3":[{"date":"2024-10-02","commitResults":[{"hash":"9df661db0ec6e1b05bf421ad243ca14f4dc25364","isMergeCommit":false,"messageTitle":"Add Clement\u0027s details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"48a02d82284f7281c841055cdd99f6bfa0da30bb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from LeongWZ/branch-UpdateAboutUs","messageBody":"Add leongwz to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d384ccb231374ca576cbd230165db90b91a5bdf5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-clement-aboutus","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"7184ce21384c903245746395395eab2d13d88545","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"3504c6b0a5789e7f4509bcab9354fcf150312700","isMergeCommit":true,"messageTitle":"Merge pull request #33 from LeongWZ/branch-AddUserProfileAndValueProp","messageBody":"Update user profile and value proposition in DG","fileTypesAndContributionMap":{}},{"hash":"efe3111d748b5c0372ce345a71d8bbd8b4ba522d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LeongWZ/branch-AddUseCases","messageBody":"Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"3f888618dd676922899667e714f891c0aa54904e","isMergeCommit":false,"messageTitle":"Add remark field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":18},"test-code":{"insertions":38,"deletions":15}}}]},{"date":"2024-10-07","commitResults":[{"hash":"adc1febcb8863f0315d6f5861aed567063afd475","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":24,"deletions":9}}}]},{"date":"2024-10-08","commitResults":[{"hash":"501d076167d8b8fb2faf78672b06e1d6b9c2ace3","isMergeCommit":false,"messageTitle":"Add priority field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":35},"test-code":{"insertions":83,"deletions":32}}}]},{"date":"2024-10-10","commitResults":[{"hash":"80bfb6a02bf56c452653ebaf546da5414da2f38d","isMergeCommit":false,"messageTitle":"Add CSS styles for priority labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"6ef2bdc8abd2a83b94f29d215b10c1fe70b93603","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":31}}},{"hash":"e52223e72b849f1344d832ea092b73a6a01d340d","isMergeCommit":true,"messageTitle":"Merge pull request #47 from LeongWZ/branch-EditRemark","messageBody":"Support editing of remark field using EditCommand","fileTypesAndContributionMap":{}},{"hash":"268e380e18a39d71f024a73511bc80f922173d1d","isMergeCommit":true,"messageTitle":"Merge pull request #50 from nws321/branch-skeleton-code-delete-multiple","messageBody":"Create skeleton code for multiple delete function","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"e2e8124d099181afd9f60fbda9972b9a1da9a40d","isMergeCommit":true,"messageTitle":"Merge pull request #59 from arjun2598/fix-sort-bug","messageBody":"Fix bug with sorting","fileTypesAndContributionMap":{}}]}],"TerenceWongsExtravaganza":[{"date":"2024-10-02","commitResults":[{"hash":"47fe1cea6f50b1a031e5e507eccf75da87e3d419","isMergeCommit":false,"messageTitle":"Update Terence details in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-03","commitResults":[{"hash":"40356087009c7baba7b3d1e1b501b47ab5dacb14","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Gra7ityIC3/add-clement-aboutus","messageBody":"Add Clement\u0027s details to AboutUs","fileTypesAndContributionMap":{}},{"hash":"a7d32d71fec2fbd6509bcd583b916f2ef74bc616","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Gra7ityIC3/update-readme","messageBody":"Update README page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"ef802fc63270fdcfb21dd351dba5419a4b19df10","isMergeCommit":false,"messageTitle":"Update site-wide setting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-08","commitResults":[{"hash":"b6022542df2b533adc58ebfcbc5d2990f12cae6c","isMergeCommit":false,"messageTitle":"Add manual command to parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"3cb47b6d818f8355d3624c62f1f95d2ca400f46e","isMergeCommit":false,"messageTitle":"Fix styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]}],"nws321":[{"date":"2024-10-02","commitResults":[{"hash":"759e25f96fc5e6b7973d0d6fb5973136a73a5f8d","isMergeCommit":false,"messageTitle":"Update Vincent\u0027s Details In AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"91644cdf3de02cd84ff60eb21a1009a170509c17","isMergeCommit":true,"messageTitle":"Merge pull request #15 from arjun2598/add-arjun2598-AboutUs","messageBody":"Add arjun2598 to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c1537e17b71329cd29e8275db97fcfe22a882450","isMergeCommit":true,"messageTitle":"Merge pull request #31 from arjun2598/add-user-stories","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}},{"hash":"f569cca0a15982b5e6394c7cb7f5da620fbef673","isMergeCommit":false,"messageTitle":"Update non-functional requirements and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"56f5fa684f6e58bfec9dbf1fd7d63f4126a21548","isMergeCommit":false,"messageTitle":"Create skeleton code for multiple delete function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"440cee1eb0b66ae58e9501d4776fc7492fbcd63b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from arjun2598/auto-sort-list","messageBody":"Auto sort list","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"arjun2598":{"docs":22,"functional-code":10,"test-code":4},"LeongWZ":{"docs":122,"functional-code":9,"test-code":56},"Gra7ityIC3":{"docs":31,"functional-code":261,"test-code":160},"TerenceWongsExtravaganza":{"docs":5,"functional-code":31,"test-code":0},"nws321":{"docs":7,"functional-code":72,"test-code":0}},"authorContributionVariance":{"arjun2598":109.65104,"LeongWZ":1205.2223,"Gra7ityIC3":4692.2896,"TerenceWongsExtravaganza":55.373272,"nws321":208.28993},"authorDisplayNameMap":{"arjun2598":"CS2103T-F14b-1 ARJU..ANAN","LeongWZ":"CS2103T-F14b-1 LEON.. ZHI","Gra7ityIC3":"CS2103T-F14b-1 OH Y..MENT","TerenceWongsExtravaganza":"CS2103T-F14b-1 TERE.. WEN","nws321":"CS2103T-F14b-1 NG W..CENT"}} diff --git a/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json index 51fc930c..a2b01e09 100644 --- a/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-3/tp/actions)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp/graph/badge.svg?token\u003dSY2FHAQJ4U)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp)","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"# ContactMate","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"This is CLI friendly contact book called **ContactMate**. It is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"ContactMate is for AAC Volunteers to manage their clients\u0027 contacts and keep track of their interactions with them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"## Features","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"- Add a contact for a client","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"- Read through a client\u0027s call history along with notes taken during the call","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"- Delete a contact","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"- List clients to call based on a priority system","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"- Mark a client as called","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"## Acknowledgements","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":17,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"You can reach us at the email `e0969203[at]u.nus.edu`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"### Zen Koh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":"\u003cimg src\u003d\"images/zenkoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"[[github](https://github.com/Zenkoh1)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"[[portfolio](team/zenkoh1.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"### Linette Goh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"\u003cimg src\u003d\"images/linette-g.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":"[[github](http://github.com/linette-g)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"[[portfolio](team/linette.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* Role: Developer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":"### Brendan Ng","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":"\u003cimg src\u003d\"images/brendanng7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"[[github](http://github.com/brendanng7)] [[portfolio](team/brendanng7.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"* Responsibilities: DevOps","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"### Ziying","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"\u003cimg src\u003d\"images/zyng233.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":"[[github](http://github.com/zyng233)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"[[portfolio](team/ziying.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"### Gabriel Chang","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"\u003cimg src\u003d\"images/gabrielcwt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":"[[github](http://github.com/gabrielcwt)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"[[portfolio](team/gabrielcwt.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":6,"GabrielCWT":5,"zyng233":4,"brendanng7":4,"-":34}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":"* employee at Active Ageing Centre (AAC)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"GabrielCWT"},"content":"**Value proposition**: Easy way to manage regular checkups. Fast, convenient and reliable way to organise contacts and ensure that everyone is checked up on a regular basis. It solves the problem of having to manually manage all the elderly just to keep up with the government’s (AIC) requirements.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"GabrielCWT"},"content":"Priorities: High (must have) - `****`, Medium (nice to have) - `***`, Low (unlikely to have) - `**`, Super Low (won\u0027t have) - `*`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Mark elderly as called | I can easily keep track of who has been contacted |","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"GabrielCWT"},"content":" | `****` | New user | list elderly contacts by priority (prioritised by last called date) | I know whom to contact first | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Remove elderly from the call list | Any elderly who has passed away or left the program will no longer be on the list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Record details of the elderly (NRIC etc.) | I know who I\u0027m calling | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Add new elderly who have joined the Befriending Program | I can keep track of these new elderly and call them regularly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Take notes regarding the call | I can keep track of things which should be followed up on | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Update elderly contact information | I can keep the elderly information up to date | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Search elderly by name | I can find this specific person if they were to call me and I can log it as a call | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Generate a monthly report to AIC / excel sheet | show the progress and outcome of the Befriending Program | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Check if the same elderly has been added multiple times | I don\u0027t call the same person multiple times | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | Make changes to the style of my address book | I can be happy when I use the address book :) | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent user | Mark contacted elderly quickly using shortcuts | I can work efficiently to contact the entire list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Detail-orientated user | Add tags to each elderly | I can keep track of details that are important when taking the call. | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Add custom fields | I can add details of elderly which are not currently in the system | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Visualise how many and which elderly to be called in a calendar | I can plan accordingly if any elderly needs to switch dates | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Filter through certain details added for the elderly | I can keep track of how the elderly are doing easily | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | receive notifications for the contacts that are due in the next hour | I can prioritize and complete the calls on time | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"GabrielCWT"},"content":" | `**` | New User | Receive feedback on the commands I have given if they are incorrect | I can easily correct the errors in the commands given | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Use my up and down arrow keys to go back and forth between commands | I don\u0027t have to retype the same commands | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Receive a list of commands that the address book uses | I can familiarise myself with the commands and shortcuts | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can undo my actions | I can correct my mistakes | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Quickly update the status of multiple elderly contacts | I can efficiently manage my tasks | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Try out the app with sample data | I can familiarise myself with it without worrying about the data I am playing around with | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Onboarded user | Purge all sample data | The app is ready to be used | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can view a history of calls made to an elderly contact | I can track past interactions | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Change the frequency of calls needed to be made for each elderly | I can track when I need to make calls | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Archive elderly contacts who are temporarily not part of the program | Keep my contact list organised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export/Import my data across computers | If I would like to work using separate computers, e.g. a laptop and desktop, I can keep them updated | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Set multiple contacts as emergency contacts | I can call their next of kin in the event the elderly do not pick up or needs help | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export a specific elderly\u0027s details and history (All information) | So I can share it with another employee | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert user | Be notified by the app when too many elderly calls are scheduled on one day | I will not overwork myself or spend too little time calling each elderly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | I can see a dashboard of my weekly or monthly call stats | I can track my productivity and ensure that I hit my KPI | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Set up automated messages for elderly contacts that are not reachable | I can have an alternative communication method | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Use AI to calculate the priority list for elderly based on their information | The correct eldelry are being prioritised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC01 \\- Mark elderly as called** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"GabrielCWT"},"content":"* Marks elderly’s details to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"GabrielCWT"},"content":"2. Staff calls the elderly at the top of the list. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"GabrielCWT"},"content":"3. Staff marks the elderly as called and takes notes of the call with mark command. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"GabrielCWT"},"content":"4. ContactMate updates the elderly as marked and displays a success message.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"GabrielCWT"},"content":"* 3a. ContactMate detects an invalid INDEX or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"GabrielCWT"},"content":" * 3a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"GabrielCWT"},"content":" * Use case resumes from step 3\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC02 \\- List elderly contacts by priority** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"GabrielCWT"},"content":"* List of elderly sorted by priority will be shown.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs list command to view elderly contacts. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate updates view to show contacts sorted based on priority (date to be called).","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC03 \\- List individual elderly call history** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"GabrielCWT"},"content":"* Elderly call history will be listed only if the input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs INDEX or NRIC of elderly they want to know the call history of. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate updates view to show a list of calls made to a specific elderly ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"\tUse case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC04 \\- Delete elderly from the call list** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"GabrielCWT"},"content":"* Delete elderly from the contact list only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs the NRIC or INDEX of elderly they want to delete. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate prompts the Staff for confirmation before deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"GabrielCWT"},"content":"4. Staff confirms the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"GabrielCWT"},"content":"5. ContactMate deletes the elderly and confirms the successful deletion for Staff.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"GabrielCWT"},"content":"* 3a. Staff cancels the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"GabrielCWT"},"content":"\t* 3a1. ContactMate shows a cancellation message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC05 \\- Add new elderly who have joined the Befriending Program, with appropriate details and fields** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"GabrielCWT"},"content":"* Adds elderly to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs details for the elderly they want to add to the system. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate adds the new elderly and shows the updated list with the newly added elderly.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"GabrielCWT"},"content":"* 1a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"GabrielCWT"},"content":"\t* 1a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"GabrielCWT"},"content":"* 1b. ContactMate detects that the elderly being added has an NRIC matching someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"GabrielCWT"},"content":"\t* 1b1. ContactMate shows an error message saying this elderly already exists. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"GabrielCWT"},"content":"* 1c. ContactMate detects that the elderly being added has a matching name, phone number or email with someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"GabrielCWT"},"content":"\t* 1c1. ContactMate shows a warning message that the elderly added has a matching field. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"GabrielCWT"},"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-09-25","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"GabrielCWT"},"content":"2. The product should be a single-user system.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"GabrielCWT"},"content":"3. The product should not rely on a remote server.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"GabrielCWT"},"content":"4. It should accommodate up to 250 elderly without noticeable performance slowdowns during typical usage.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"GabrielCWT"},"content":"5. The product should respond within two seconds.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"GabrielCWT"},"content":"6. The product should work on Windows, Linux and Mac as long as they have `Java 17` installed.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"GabrielCWT"},"content":"* **AAC**: Active Ageing Centre. A recreational centre that supports elderly in the area.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"GabrielCWT"},"content":"* **Befriending** Program: Program which elderly signs up for to receive support from an AAC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"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","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"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","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"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","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"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","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":135,"-":361}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"title: \"ContactMate\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"repository: \"AY2425S1-CS2103T-F14b-3/tp\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"brendanng7":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"brendanng7"},"content":" content: \"ContactMate\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"brendanng7":1,"-":294}},{"path":"docs/team/brendanng7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"title: brendanng7\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"brendanng7":46}},{"path":"docs/team/gabrielcwt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"title: Gabriel Chang\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" * Uses codecov to check code coverage","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":44}},{"path":"docs/team/linette.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":46}},{"path":"docs/team/zenkoh1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" * Returns an unmodifiable view of the call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" return model.getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"zyng233":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NRIC \u003d \"The person nric provided is not within list\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" builder.append(String.format(\"%s - %s\", person.getNric(), person.getName()))","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .append(person.getCallFrequency())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" .append(\"; Call Frequency: \");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":1,"Zenkoh1":1,"brendanng7":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"S5087089H \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"7 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" public String getPersonName() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" String[] parts \u003d feedbackToUser.split(\": \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return parts.length \u003e 1 ? parts[1].strip() : \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zyng233":4,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Deletes a person identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person at the specified {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person with the specified {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" Person personToDelete;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherDeleteCommand.targetIndex))","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherDeleteCommand.targetNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":31,"-":64}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" + \"by the index number used in the displayed person list or NRIC. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued) \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" + \"[\" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY] \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":" this.nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"linette-g"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":" * @param nric of the person in the filtered person list to edit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" public EditCommand(Nric nric, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" this.index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"linette-g"},"content":" Person personToEdit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"linette-g"},"content":" Person editedPerson;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d model.getPersonByNric(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDates \u003d editPersonDescriptor.getContactDates().orElse(personToEdit.getContactDates());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"brendanng7"},"content":" CallFrequency updatedCallFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.getCallFrequency().orElse(personToEdit.getCallFrequency());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"GabrielCWT"},"content":" return new Person(updatedNric, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"brendanng7"},"content":" contactDates, updatedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" return (index !\u003d null \u0026\u0026 index.equals(otherEditCommand.index)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" || (nric !\u003d null \u0026\u0026 nric.equals(otherEditCommand.nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"GabrielCWT"},"content":" private ContactDateList contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"GabrielCWT"},"content":" setContactDates(toCopy.contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" setCallFrequency(toCopy.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"brendanng7"},"content":" return CollectionUtil.isAnyNonNull(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Zenkoh1"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Zenkoh1"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"GabrielCWT"},"content":" public Optional\u003cContactDateList\u003e getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"GabrielCWT"},"content":" return Optional.ofNullable(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"GabrielCWT"},"content":" public void setContactDates(ContactDateList contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates \u003d contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"brendanng7"},"content":" public Optional\u003cCallFrequency\u003e getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"brendanng7"},"content":" return Optional.ofNullable(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"brendanng7"},"content":" public void setCallFrequency(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Zenkoh1"},"content":" return Objects.equals(nric, otherEditPersonDescriptor.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(callFrequency, otherEditPersonDescriptor.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"linette-g":34,"Zenkoh1":17,"GabrielCWT":15,"brendanng7":21,"-":230}},{"path":"src/main/java/seedu/address/logic/commands/HistoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * Finds and lists the call history of the elderly in address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"public class HistoryCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public static final String COMMAND_WORD \u003d \"history\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" + \": List call history of the person identified by the index number or NRIC in the displayed person list.\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_SHOW_HISTORY_SUCCESS \u003d \"Call history of person: %1$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person at the specified {@code Index}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" * @param targetIndex The {@code Index} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person with the specified {@code Nric}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" * @param targetNric The {@code Nric} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Nric targetNric) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" Person personFound;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" personFound \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" personFound \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" if (personFound \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d model.getCallHistory(personFound);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return new CommandResult(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personFound.getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof HistoryCommand)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" HistoryCommand otherHistoryCommand \u003d (HistoryCommand) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherHistoryCommand.targetIndex))","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherHistoryCommand.targetNric));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" .toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":99}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.util.List;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * Marks a person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" * Identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" + \": Marks the person identified by the index number used in the displayed person list as contacted.\\n\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_MARK_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDate contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person at the specified {@code Index} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Index targetIndex, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person with the specified {@code Nric} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Nric targetNric, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" Person personToMark;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" personToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" personToMark \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":" if (personToMark \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" model.markAsContacted(personToMark, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" return new CommandResult(String.format(MESSAGE_MARK_PERSON_SUCCESS, Messages.format(personToMark)));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof MarkCommand)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand otherMarkCommand \u003d (MarkCommand) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" return ((targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherMarkCommand.targetIndex))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherMarkCommand.targetNric)))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" \u0026\u0026 contactDate.equals(otherMarkCommand.contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" .toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"GabrielCWT":71}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" PREFIX_EMAIL, PREFIX_CALL_FREQUENCY)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" Person person \u003d new Person(nric, name, phone, email, address, tagList, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":13,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" case HistoryCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" return new HistoryCommandParser().parse(arguments);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":4,"zyng233":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final Prefix PREFIX_CALL_FREQUENCY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final Prefix PREFIX_NOTES \u003d new Prefix(\"o/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"GabrielCWT":1,"brendanng7":1,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":7,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" Index index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" if (argMultimap.getValue(PREFIX_CALL_FREQUENCY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.setCallFrequency(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" return new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"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","isFullCredit":false},{"lineNumber":94,"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":15,"Zenkoh1":5,"brendanng7":9,"-":78}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" // TODO: Implement the logic for searching by NRIC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"-":33}},{"path":"src/main/java/seedu/address/logic/parser/HistoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" * Parses input arguments and creates a new HistoryCommand object","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParser implements Parser\u003cHistoryCommand\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" * Parses the given {@code String} of arguments in the context of the HistoryCommand","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * and returns a HistoryCommand object for execution.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public HistoryCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(nric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":33}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * and returns an MarkCommand object for execution.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" String notes \u003d argMultimap.getValue(PREFIX_NOTES).orElse(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" Index index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(index, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" Nric nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(nric, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":3,"GabrielCWT":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" * Parses a {@code String callFrequency} into an {@code CallFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" * @throws ParseException if the given {@code callFrequency} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"brendanng7"},"content":" public static CallFrequency parseCallFrequency(String callFrequency) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" String trimmedCallFrequency \u003d callFrequency.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(trimmedCallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"brendanng7"},"content":" throw new ParseException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"brendanng7"},"content":" return new CallFrequency(trimmedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Index}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingIndex(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Nric}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingNric(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"Zenkoh1":16,"brendanng7":16,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" * Marks the given person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" void markAsContacted(Person target, ContactDate contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" * Returns the call history of the given person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" * Updates the displayed list to show the call history of the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" * The call history must not be empty.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" void updateDisplayedList(ContactDateList callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" * Returns the displayed call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" ContactDateList getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"linette-g"},"content":" Person getPersonByNric(Nric nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"linette-g":2,"GabrielCWT":8,"zyng233":18,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final ObservableList\u003cString\u003e displayedCallHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" this.displayedCallHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(target);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" target.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":" if (person.getNric().equals(nric)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" return person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" return null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Call History \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":" return target.getContactDates();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":" requireNonNull(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" for (ContactDate date : callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.add(date.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" for (String call : displayedCallHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":" ContactDate contactDate \u003d new ContactDate(call, \"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" callHistory.add(contactDate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" return callHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 displayedCallHistory.equals(otherModelManager.displayedCallHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"linette-g":11,"GabrielCWT":6,"zyng233":33,"-":147}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" * Represents a Person\u0027s contacted date in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactDate(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" \"Dates should be in the format of YYYY-MM-DD\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public final LocalDate value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code ContactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" * @param date A valid date and time.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate(String date, String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" checkArgument(isValidContactDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" value \u003d LocalDate.parse(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public static boolean isValidContactDate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" LocalDate.parse(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" * Returns the current date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" public static ContactDate createCurrentDate(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(LocalDate.now().toString(), notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" * Returns a new {@code ContactDate} that is a specified number of days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" * The number of days is determined by the {@code callFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency The frequency of calls, represented as a {@code CallFrequency} object,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" * which determines how many days to add to the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" * @return A new {@code ContactDate} that is {@code callFrequency} days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"brendanng7"},"content":" public ContactDate add(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"brendanng7"},"content":" int daysToAdd \u003d Integer.parseInt(callFrequency.value); // Parse the number of days from callFrequency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(value.plusDays(daysToAdd).toString(), \"\"); // Create and return a new ContactDate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" return value.toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" public String getNotes() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" return notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof ContactDate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" ContactDate otherDate \u003d (ContactDate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" return value.equals(otherDate.value) \u0026\u0026 notes.equals(otherDate.notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":82,"zyng233":2,"brendanng7":15}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * Represents a List of ContactDates in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateList extends ArrayList\u003cContactDate\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Creates a ContactDateList with the given ContactDates.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDatesToAdd","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ContactDate ...contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ArrayList\u003cContactDate\u003e contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" super(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * Adds all the ContactDates in the given ContactDateList to this ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDateList","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" public void addAll(ContactDateList contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Adds the current date to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.add(ContactDate.createCurrentDate(notes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" * Adds the given ContactDate to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDate","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" * Returns the last ContactDate in the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" * @return the most recent ContactDate.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" * @throws IndexOutOfBoundsException if the list is empty.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" if (this.size() \u003d\u003d 0) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" throw new IndexOutOfBoundsException(\"No ContactDates in the list.\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" return this.get(this.size() - 1);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof ContactDateList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" ContactDateList that \u003d (ContactDateList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (this.size() \u003d\u003d that.size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" if (!this.get(i).equals(that.get(i))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":74,"zyng233":14}},{"path":"src/main/java/seedu/address/model/person/CallFrequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":" * Represents a Person\u0027s call frequency in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCallFrequency(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"public class CallFrequency {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" \"Calling frequency is in days and has to be a positive number less than or equal to 7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-7]$\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" * Constructs a {@code CallFrequency}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency A valid date.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" public CallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":" checkArgument(isValidCallFrequency(callFrequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" value \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * Returns true if a given string is a valid call frequency.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" public static boolean isValidCallFrequency(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" if (!(other instanceof CallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency otherCallFrequency \u003d (CallFrequency) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" return value.equals(otherCallFrequency.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"public class Nric {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" \"Please ensure that the NRIC is a valid one issued by the Singapore government.\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" /*","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" * NRIC should start with S, T, F or G followed by 7 digits and end with a character.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)^([STFG])(\\\\d{7})([A-Z])$\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" public final String value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" value \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" Pattern r \u003d Pattern.compile(VALIDATION_REGEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" Matcher m \u003d r.matcher(test);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" if (m.find()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return isValidCheckSum(m.group(1), m.group(2), m.group(3));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the checksum of the NRIC is valid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" * Checksum as used by the Singapore government to validate NRIC numbers.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" * Any magic numbers or characters used in the method are based on the checksum algorithm.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" * @param firstChar The first character of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" * @param middleDigits The middle 7 digits of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" * @param lastChar The last character of the NRIC number, the checksum.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" * @return true if the checksum is valid, false otherwise.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" private static boolean isValidCheckSum(String firstChar, String middleDigits, String lastChar) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // Weights for each digit in the NRIC number (in order).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" int[] weights \u003d {2, 7, 6, 5, 4, 3, 2};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" int sum \u003d 0;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" // Multiply each digit in the NRIC number by its weight i.e. 2 7 6 5 4 3 2 in order.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" for (int i \u003d 0; i \u003c middleDigits.length(); i++) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d Integer.parseInt(middleDigits.substring(i, i + 1)) * weights[i];","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // If the first letter of the NRIC starts with T or G, add 4 to the total.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"T\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d 4;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" // Find the remainder of (sum calculated above) mod 11","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" int remainder \u003d sum % 11;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"S\") || firstChar.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"J\", \"Z\", \"I\", \"H\", \"G\", \"F\", \"E\", \"D\", \"C\", \"B\", \"A\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" } else if (firstChar.equalsIgnoreCase(\"F\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"X\", \"W\", \"U\", \"T\", \"R\", \"Q\", \"P\", \"N\", \"M\", \"L\", \"K\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // Should never reach here as the first character of the NRIC should be S, T, F or G,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" // and this is already checked in the isValidNric method.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assert false : \"Invalid first character of NRIC\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public String toString() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" return value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as NRIC is case-insensitive","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherNric.value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":118}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDateList contactDates \u003d new ContactDateList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private final CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" ContactDateList contactDates, CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" requireAllNonNull(nric, name, phone, email, address, tags, contactDates, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" * For creating a new person. Every field but contact date must be present and not null.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" this(nric, name, phone, email, address, tags, new ContactDateList(ContactDate.createCurrentDate(\"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" public Nric getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" return nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" return contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return contactDates.getLastContacted();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" public CallFrequency getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" return callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"brendanng7"},"content":" public ContactDate getNextContactDate() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"brendanng7"},"content":" return getLastContacted().add(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Mark the person as contacted today.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" contactDates.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" return Objects.hash(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"GabrielCWT":27,"brendanng7":15,"-":114}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7083906G\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"friends\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S0964515B\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\", \"friends\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7419603I\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"neighbours\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"7\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S9496815A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"family\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S8388963B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"classmates\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7495552E\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"3\"))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":8,"brendanng7":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" * Jackson-friendly version of {@link ContactDate}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"ContactDate\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private final String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code JsonAdaptedContactDate} with the given {@code contactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" @JsonCreator","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(@JsonProperty(\"date\") String date, @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Converts a given {@code ContactDate} into this class for Jackson use.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(ContactDate source) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" date \u003d source.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" * Converts this Jackson-friendly adapted contact date object into the model\u0027s {@code ContactDate} object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" if (!ContactDate.isValidContactDate(date)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(ContactDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" if (notes \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private final String nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" private final List\u003cJsonAdaptedContactDate\u003e contactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" private final String callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"contactDates\") List\u003cJsonAdaptedContactDate\u003e contactDates,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"callFrequency\") String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates !\u003d null) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d source.getNric().value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d source.getCallFrequency().value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" contactDates.addAll(source.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" final ArrayList\u003cContactDate\u003e personContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList.class.getSimpleName()));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" for (JsonAdaptedContactDate contactDate : contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" personContactDates.add(contactDate.toModelType());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"brendanng7"},"content":" if (callFrequency \u003d\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"brendanng7"},"content":" CallFrequency.class.getSimpleName()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(callFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" final CallFrequency modelCallFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" final ContactDateList modelContactDates \u003d new ContactDateList(personContactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"brendanng7"},"content":" return new Person(modelNric, modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"brendanng7"},"content":" modelContactDates, modelCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":21,"brendanng7":18,"-":105}},{"path":"src/main/java/seedu/address/ui/CallHistoryCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" * An UI component that displays information of a {@code CallHistory}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"public class CallHistoryCard extends UiPart\u003cHBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryCard.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private Label indexLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" private Label contactDateLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryCard} with the given {@code CallHistory} and index to display.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" public CallHistoryCard(ContactDate contactDate, int index) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" indexLabel.setText(index + \". \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" contactDateLabel.setText(contactDate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":28}},{"path":"src/main/java/seedu/address/ui/CallHistoryPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" * Panel containing the list of call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"public class CallHistoryPanel extends UiPart\u003cVBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryPanel.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" private ListView\u003cContactDate\u003e callHistoryView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" private ObservableList\u003cContactDate\u003e items;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryPanel}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" public CallHistoryPanel() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" items \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" callHistoryView.setItems(items);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" callHistoryView.setCellFactory(param -\u003e new ListCell\u003c\u003e() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" protected void updateItem(ContactDate contactDate, boolean empty) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" super.updateItem(contactDate, empty);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" if (empty || contactDate \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" setText(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" int index \u003d getIndex() + 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" CallHistoryCard card \u003d new CallHistoryCard(contactDate, index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" setGraphic(card.getRoot());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" });","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" * Initializes the call history panel with the given {@code ContactDateList}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" public void initializeCallHistory(ContactDateList history) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" items.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" items.addAll(FXCollections.observableArrayList(history));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" private StackPane mainListPanelPlaceholder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" private CallHistoryPanel callHistoryPanel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":" callHistoryPanel \u003d new CallHistoryPanel();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" String personName \u003d commandResult.getPersonName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" if (commandResult.getFeedbackToUser().contains(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personName))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" updateCallHistory();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" updatePersonListPanel();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" private void updateCallHistory() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" callHistoryPanel.initializeCallHistory(logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"zyng233"},"content":" private void updatePersonListPanel() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"zyng233":34,"-":194}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private Label nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" @FXML","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" private Label lastContacted;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" @FXML","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" private Label callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" nric.setText(person.getNric().value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" lastContacted.setText(person.getLastContacted().toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" callFrequency.setText(person.getCallFrequency().toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":3,"GabrielCWT":3,"brendanng7":3,"-":59}},{"path":"src/main/resources/view/CallHistoryCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"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-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"indexLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDateLabel\" styleClass\u003d\"cell_big_label\"/\u003e \u003c!-- Change fx:id to match Java code --\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDate\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":20}},{"path":"src/main/resources/view/CallHistoryPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":" \u003cListView fx:id\u003d\"callHistoryView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" \u003cStackPane fx:id\u003d\"mainListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"zyng233":1,"-":59}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" text\u003d\" - \" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" \u003cLabel fx:id\u003d\"lastContacted\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastContacted\" /\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" \u003cLabel fx:id\u003d\"callFrequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$callFrequency\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":5,"GabrielCWT":1,"brendanng7":1,"-":33}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" public void getCallHistory_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" callHistory.add(new ContactDate(\"2021-01-01\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" assertEquals(callHistory, logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NRIC_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"zyng233":10,"brendanng7":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"GabrielCWT"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"GabrielCWT":5,"zyng233":17,"-":204}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" public void getPersonName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // Test case 1: Valid format with a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" CommandResult commandResult \u003d new CommandResult(\"User: John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertEquals(\"John Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // Test case 2: No colon in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" // Test case 3: Empty string in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" // Test case 4: Colon but no name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // Test case 5: Colon with spaces and name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: Jane Doe \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" assertEquals(\"Jane Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09","isFullCredit":false}],"authorContributionMap":{"zyng233":23,"-":63}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_AMY \u003d \"S3862905J\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_BOB \u003d \"S3233528D\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALID_NOTES \u003d \"This is a note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_AMY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_BOB \u003d \"5\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" public static final String NOTES_DESC \u003d \" \" + PREFIX_NOTES + VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_AMY \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_BOB \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"S1234567A\"; // \u0027A\u0027 is not a valid checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"brendanng7"},"content":" public static final String INVALID_CALL_FREQUENCY_DESC \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + \"8\"; // Call frequency must be at most 7 days","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"GabrielCWT":3,"brendanng7":12,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNric \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteSecondNric \u003d new DeleteCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNricCopy \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(deleteSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandForIndex \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, deleteCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandWithNric \u003d new DeleteCommand(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, deleteCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getNric());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" DeleteCommand markCommand \u003d new DeleteCommand(unregisteredNric);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"linette-g":60,"-":116}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" final EditCommand standardCommand \u003d new EditCommand(new Nric(VALID_NRIC_AMY), DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new Nric(VALID_NRIC_AMY), copyDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_BOB), DESC_AMY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"linette-g"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_AMY), DESC_BOB)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"linette-g"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForIndex \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"linette-g"},"content":" + \", nric\u003dnull, editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"linette-g"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, editCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForNric \u003d new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d EditCommand.class.getCanonicalName() + \"{index\u003dnull, nric\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"linette-g"},"content":" + nric + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, editCommandForNric.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"linette-g"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"linette-g"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(personToEdit.getNric(), descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"linette-g"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"linette-g"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"linette-g"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(unregisteredNric, descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"linette-g":68,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" //different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" + editPersonDescriptor.getNric().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", call frequency\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getCallFrequency().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"brendanng7":2,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/HistoryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" * Contains integration tests (interaction with the Model) for {@code HistoryCommand}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" public void equals() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" HistoryCommand secondHistoryCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommandCopy));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(secondHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Index","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommandCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(historySecondCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Nric","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"zyng233"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNric \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondNric \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNricCopy \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNricCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(historySecondNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" public void execute_validNricFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" public void execute_validNricUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithIndex \u003d new HistoryCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" String expected \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" assertEquals(expected, historyCommandWithIndex.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithNric \u003d new HistoryCommand(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" String expectedNricString \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedNricString, historyCommandWithNric.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":219}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" * {@code MarkCommand}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondCommand \u003d new MarkCommand(INDEX_SECOND_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandCopy \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandDifferentDate \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markFirstCommandDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNric \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondNric \u003d new MarkCommand(new Nric(VALID_NRIC_BOB), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricCopy \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricDifferentDate \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstNric.equals(markFirstNricDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(markSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithIndex \u003d new MarkCommand(targetIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, markCommandWithIndex.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithNric \u003d new MarkCommand(targetNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, markCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(personToMark.getNric(), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(unregisteredNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":53,"GabrielCWT":137}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CALL_FREQUENCY_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" String validExpectedPersonString \u003d NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // multiple nrics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" validExpectedPersonString + NRIC_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"brendanng7"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE, PREFIX_CALL_FREQUENCY));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, NRIC_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" // missing nric prefix","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"brendanng7"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"brendanng7"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"brendanng7"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"brendanng7"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"brendanng7"},"content":" // invalid call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"brendanng7"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_CALL_FREQUENCY_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"brendanng7"},"content":" CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + CALL_FREQUENCY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"brendanng7"},"content":" + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":42,"brendanng7":38,"-":163}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand command \u003d (MarkCommand) parser.parseCommand(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" + \" \" + NOTES_DESC);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(new MarkCommand(INDEX_FIRST_PERSON, validDate), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" public void parseCommand_history() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" HistoryCommand command \u003d (HistoryCommand) parser.parseCommand(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" HistoryCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(new HistoryCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":14,"zyng233":8,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new DeleteCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"-":31}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1 q/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" // invalid NRIC that fails NRIC validation","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"S1234567Z\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsEditCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" String userInput \u003d targetNric + PHONE_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetNric, descriptor);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" // nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Zenkoh1"},"content":" // name","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Zenkoh1"},"content":" userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Zenkoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"brendanng7"},"content":" // call frequency","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"brendanng7"},"content":" userInput \u003d targetIndex.getOneBased() + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"brendanng7"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":22,"zyng233":16,"brendanng7":11,"-":198}},{"path":"src/test/java/seedu/address/logic/parser/HistoryCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParserTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private HistoryCommandParser parser \u003d new HistoryCommandParser();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" public void parse_validArgs_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, \"1\", new HistoryCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new HistoryCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":31}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" * outside of the MarkCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" * same path through the MarkCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\" + NOTES_DESC, new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY + NOTES_DESC, new MarkCommand(new Nric(VALID_NRIC_AMY), validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" public void parse_emptyNotes_returnsMarkCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(\"\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\", new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"GabrielCWT":43}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d \"S0431600B\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNric((String) null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNric(INVALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithoutWhitespace_returnsNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(VALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithWhitespace_returnsTrimmedNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" String nricWithWhitespace \u003d WHITESPACE + VALID_NRIC + WHITESPACE;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(nricWithWhitespace));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":219,"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":27,"-":196}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateListTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" // Throws IndexOutOfBoundsException when list is empty","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.getLastContacted();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(true);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" // test 1","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // test 2","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" ContactDate newContactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(newContactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(newContactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted_contactDateProvided() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateListCopy \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy2 \u003d new ContactDateList(new ContactDate(\"2021-10-10\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy3 \u003d new ContactDateList(new ContactDate(\"2021-10-11\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDateList.equals(contactDateList));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // different object, same types, same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" assertTrue(contactDateList.equals(contactDateListCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // different object, same types, different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" assertFalse(contactDateListCopy2.equals(contactDateListCopy3));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":68,"zyng233":7}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactDate(null, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_invalidContactDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" String invalidContactDate \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactDate(invalidContactDate, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" public void isValidContactDate() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" // null tag contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactDate.isValidContactDate(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" // invalid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-13-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-01-32\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" // valid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(ContactDate.isValidContactDate(\"2020-01-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" public void createCurrentDate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.value, currentDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.getNotes(), VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" public void addCallFrequency_validCallFrequency_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withDate(\"2020-01-01\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" ContactDate newContactDate \u003d contactDate.add(callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" ContactDate targetContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-08\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" assertEquals(newContactDate, targetContactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDateCopy \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDateCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" // different contact date -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-02\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentContactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentNotes \u003d new ContactDateBuilder().withNotes(\"Different notes\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentNotes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":77,"brendanng7":7}},{"path":"src/test/java/seedu/address/model/person/CallFrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"public class CallFrequencyTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e new CallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public void constructor_invalidCallFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":" String invalidCallFrequency \u003d \"8\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CallFrequency(invalidCallFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" public void isValidCallFrequency() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" // null call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e CallFrequency.isValidCallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" // invalid call frequencies","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"8\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"0\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" // valid call frequencies which are between 1 and 7 inclusive","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"1\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"2\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"3\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"4\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"5\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"6\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"7\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(new CallFrequency(\"7\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(5.0f));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(new CallFrequency(\"5\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"public class NricTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public void isValidNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" // null nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"232323\")); // just numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S64065D\")); // only 5 digits","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542Z\")); // wrong checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"P6406542D\")); // starting with P","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542232Z\")); // too long","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" // valid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"s6406542d\")); // lowercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"S6406542D\")); // uppercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"T5517825E\")); // starting with T","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"F3895385X\")); // starting with F","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"G8413738W\")); // starting with G","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d new Nric(\"S6406542D\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"S6406542D\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" // same values with different case -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"s6406542d\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(new Nric(\"S9798929Z\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":66}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" // nric differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // nric has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" person.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":" // 1 contact date added on initialisation and another added by markAsContacted","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(2, person.getContactDates().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(person.getContactDates().getLastContacted(), person.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" + \", name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", call frequency\u003d\" + ALICE.getCallFrequency() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":20,"GabrielCWT":17,"brendanng7":5,"-":84}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.storage.JsonAdaptedContactDate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDateTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_DATE \u003d \"2024-13-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private static final String VALID_DATE \u003d \"2024-01-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_validContactDateDetails_returnsContactDate() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, jsonContactDate.toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(INVALID_DATE, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d ContactDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(null, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullNotes_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(VALID_DATE, null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_CONTACT_DATE \u003d \"2020-13-01\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private static final String INVALID_CALL_FREQUENCY \u003d \"0\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" private static final List\u003cJsonAdaptedContactDate\u003e VALID_CONTACT_DATES \u003d BENSON.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" private static final String VALID_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" invalidTags, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidContactDates_throwsIllegalValueException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e invalidContactDates \u003d new ArrayList\u003c\u003e(VALID_CONTACT_DATES);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" invalidContactDates.add(new JsonAdaptedContactDate(INVALID_CONTACT_DATE, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, invalidContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_emptyContactDates_returnsPerson() throws Exception {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e emptyContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, emptyContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" public void toModelType_invalidCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, INVALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d CallFrequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"brendanng7"},"content":" public void toModelType_nullCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CallFrequency.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":14,"GabrielCWT":31,"brendanng7":32,"-":99}},{"path":"src/test/java/seedu/address/testutil/ContactDateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * A utility class to help with building ContactDate objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_DATE \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_NOTES \u003d \"This is a default note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" private String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" private String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Creates a {@code ContactDateBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" date \u003d DEFAULT_DATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d DEFAULT_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" * Initializes the ContactDateBuilder with the data of {@code contactDateToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder(ContactDate contactDateToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" date \u003d contactDateToCopy.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d contactDateToCopy.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Date} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withDate(String date) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Notes} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withNotes(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * Builds the ContactDate object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" return ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"brendanng7"},"content":" public EditPersonDescriptorBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"brendanng7"},"content":" descriptor.setCallFrequency(new CallFrequency(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"brendanng7":10,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" public static final String DEFAULT_NRIC \u003d \"S6253973I\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" public static final String DEFAULT_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d new CallFrequency(DEFAULT_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d personToCopy.getCallFrequency();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"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","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"brendanng7"},"content":" public PersonBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" return new Person(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"brendanng7":14,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" sb.append(PREFIX_NRIC + person.getNric().value + \" \");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" sb.append(PREFIX_CALL_FREQUENCY + person.getCallFrequency().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" descriptor.getNric().ifPresent(nric -\u003e sb.append(PREFIX_NRIC).append(nric.value).append(\" \"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"S5207047C\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"S0233700B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"S6192793Z\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S0589789J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S5674593I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"S1092693I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"S8596794J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"S5594223D\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"S1751126B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"brendanng7"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":24,"zyng233":4,"brendanng7":22,"-":54}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-3/tp/actions)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp/graph/badge.svg?token\u003dSY2FHAQJ4U)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp)","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"# ContactMate","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"This is CLI friendly contact book called **ContactMate**. It is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"ContactMate is for AAC Volunteers to manage their clients\u0027 contacts and keep track of their interactions with them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"## Features","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"- Add a contact for a client","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"- Read through a client\u0027s call history along with notes taken during the call","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"- Delete a contact","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"- List clients to call based on a priority system","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"- Mark a client as called","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"## Acknowledgements","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":17,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"You can reach us at the email `e0969203[at]u.nus.edu`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"### Zen Koh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":"\u003cimg src\u003d\"images/zenkoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"[[github](https://github.com/Zenkoh1)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"[[portfolio](team/zenkoh1.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"### Linette Goh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"\u003cimg src\u003d\"images/linette-g.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":"[[github](http://github.com/linette-g)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"[[portfolio](team/linette.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* Role: Developer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":"### Brendan Ng","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":"\u003cimg src\u003d\"images/brendanng7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"[[github](http://github.com/brendanng7)] [[portfolio](team/brendanng7.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"* Responsibilities: DevOps","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"### Ziying","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"\u003cimg src\u003d\"images/zyng233.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":"[[github](http://github.com/zyng233)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"[[portfolio](team/ziying.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"### Gabriel Chang","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"\u003cimg src\u003d\"images/gabrielcwt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":"[[github](http://github.com/gabrielcwt)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"[[portfolio](team/gabrielcwt.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":6,"GabrielCWT":5,"zyng233":4,"brendanng7":4,"-":34}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":"* employee at Active Ageing Centre (AAC)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"GabrielCWT"},"content":"**Value proposition**: Easy way to manage regular checkups. Fast, convenient and reliable way to organise contacts and ensure that everyone is checked up on a regular basis. It solves the problem of having to manually manage all the elderly just to keep up with the government’s (AIC) requirements.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"GabrielCWT"},"content":"Priorities: High (must have) - `****`, Medium (nice to have) - `***`, Low (unlikely to have) - `**`, Super Low (won\u0027t have) - `*`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Mark elderly as called | I can easily keep track of who has been contacted |","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"GabrielCWT"},"content":" | `****` | New user | list elderly contacts by priority (prioritised by last called date) | I know whom to contact first | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Remove elderly from the call list | Any elderly who has passed away or left the program will no longer be on the list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Record details of the elderly (NRIC etc.) | I know who I\u0027m calling | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Add new elderly who have joined the Befriending Program | I can keep track of these new elderly and call them regularly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Take notes regarding the call | I can keep track of things which should be followed up on | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Update elderly contact information | I can keep the elderly information up to date | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Search elderly by name | I can find this specific person if they were to call me and I can log it as a call | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Generate a monthly report to AIC / excel sheet | show the progress and outcome of the Befriending Program | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Check if the same elderly has been added multiple times | I don\u0027t call the same person multiple times | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | Make changes to the style of my address book | I can be happy when I use the address book :) | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent user | Mark contacted elderly quickly using shortcuts | I can work efficiently to contact the entire list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Detail-orientated user | Add tags to each elderly | I can keep track of details that are important when taking the call. | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Add custom fields | I can add details of elderly which are not currently in the system | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Visualise how many and which elderly to be called in a calendar | I can plan accordingly if any elderly needs to switch dates | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Filter through certain details added for the elderly | I can keep track of how the elderly are doing easily | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | receive notifications for the contacts that are due in the next hour | I can prioritize and complete the calls on time | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"GabrielCWT"},"content":" | `**` | New User | Receive feedback on the commands I have given if they are incorrect | I can easily correct the errors in the commands given | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Use my up and down arrow keys to go back and forth between commands | I don\u0027t have to retype the same commands | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Receive a list of commands that the address book uses | I can familiarise myself with the commands and shortcuts | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can undo my actions | I can correct my mistakes | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Quickly update the status of multiple elderly contacts | I can efficiently manage my tasks | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Try out the app with sample data | I can familiarise myself with it without worrying about the data I am playing around with | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Onboarded user | Purge all sample data | The app is ready to be used | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can view a history of calls made to an elderly contact | I can track past interactions | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Change the frequency of calls needed to be made for each elderly | I can track when I need to make calls | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Archive elderly contacts who are temporarily not part of the program | Keep my contact list organised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export/Import my data across computers | If I would like to work using separate computers, e.g. a laptop and desktop, I can keep them updated | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Set multiple contacts as emergency contacts | I can call their next of kin in the event the elderly do not pick up or needs help | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export a specific elderly\u0027s details and history (All information) | So I can share it with another employee | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert user | Be notified by the app when too many elderly calls are scheduled on one day | I will not overwork myself or spend too little time calling each elderly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | I can see a dashboard of my weekly or monthly call stats | I can track my productivity and ensure that I hit my KPI | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Set up automated messages for elderly contacts that are not reachable | I can have an alternative communication method | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Use AI to calculate the priority list for elderly based on their information | The correct eldelry are being prioritised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC01 \\- Mark elderly as called** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"GabrielCWT"},"content":"* Marks elderly’s details to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"GabrielCWT"},"content":"2. Staff calls the elderly at the top of the list. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"GabrielCWT"},"content":"3. Staff marks the elderly as called and takes notes of the call with mark command. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"GabrielCWT"},"content":"4. ContactMate updates the elderly as marked and displays a success message.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"GabrielCWT"},"content":"* 3a. ContactMate detects an invalid INDEX or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"GabrielCWT"},"content":" * 3a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"GabrielCWT"},"content":" * Use case resumes from step 3\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC02 \\- List elderly contacts by priority** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"GabrielCWT"},"content":"* List of elderly sorted by priority will be shown.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs list command to view elderly contacts. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate updates view to show contacts sorted based on priority (date to be called).","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC03 \\- List individual elderly call history** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"GabrielCWT"},"content":"* Elderly call history will be listed only if the input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs INDEX or NRIC of elderly they want to know the call history of. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate updates view to show a list of calls made to a specific elderly ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"\tUse case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC04 \\- Delete elderly from the call list** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"GabrielCWT"},"content":"* Delete elderly from the contact list only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs the NRIC or INDEX of elderly they want to delete. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate prompts the Staff for confirmation before deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"GabrielCWT"},"content":"4. Staff confirms the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"GabrielCWT"},"content":"5. ContactMate deletes the elderly and confirms the successful deletion for Staff.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"GabrielCWT"},"content":"* 3a. Staff cancels the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"GabrielCWT"},"content":"\t* 3a1. ContactMate shows a cancellation message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC05 \\- Add new elderly who have joined the Befriending Program, with appropriate details and fields** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"GabrielCWT"},"content":"* Adds elderly to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs details for the elderly they want to add to the system. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate adds the new elderly and shows the updated list with the newly added elderly.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"GabrielCWT"},"content":"* 1a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"GabrielCWT"},"content":"\t* 1a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"GabrielCWT"},"content":"* 1b. ContactMate detects that the elderly being added has an NRIC matching someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"GabrielCWT"},"content":"\t* 1b1. ContactMate shows an error message saying this elderly already exists. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"GabrielCWT"},"content":"* 1c. ContactMate detects that the elderly being added has a matching name, phone number or email with someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"GabrielCWT"},"content":"\t* 1c1. ContactMate shows a warning message that the elderly added has a matching field. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"GabrielCWT"},"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-09-25","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"GabrielCWT"},"content":"2. The product should be a single-user system.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"GabrielCWT"},"content":"3. The product should not rely on a remote server.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"GabrielCWT"},"content":"4. It should accommodate up to 250 elderly without noticeable performance slowdowns during typical usage.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"GabrielCWT"},"content":"5. The product should respond within two seconds.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"GabrielCWT"},"content":"6. The product should work on Windows, Linux and Mac as long as they have `Java 17` installed.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"GabrielCWT"},"content":"* **AAC**: Active Ageing Centre. A recreational centre that supports elderly in the area.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"GabrielCWT"},"content":"* **Befriending** Program: Program which elderly signs up for to receive support from an AAC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"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","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"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","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"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","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"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","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":135,"-":361}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"title: \"ContactMate\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"repository: \"AY2425S1-CS2103T-F14b-3/tp\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"brendanng7":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"brendanng7"},"content":" content: \"ContactMate\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"brendanng7":1,"-":294}},{"path":"docs/team/brendanng7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"title: brendanng7\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"brendanng7":46}},{"path":"docs/team/gabrielcwt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"title: Gabriel Chang\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" * Uses codecov to check code coverage","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":44}},{"path":"docs/team/linette.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":46}},{"path":"docs/team/zenkoh1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"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-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" * Returns an unmodifiable view of the call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" return model.getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"zyng233":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NRIC \u003d \"The person nric provided is not within list\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" builder.append(String.format(\"%s - %s\", person.getNric(), person.getName()))","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .append(person.getCallFrequency())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" .append(\"; Call Frequency: \");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":1,"Zenkoh1":1,"brendanng7":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"S5087089H \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"7 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_SUCCESS_WITH_WARNING \u003d \"New person added: %1$s\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" + \"Warning: There is an existing person with the same name, phone number or email.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" String finalMessage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" if (model.hasSimilarPerson(toAdd)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_SUCCESS_WITH_WARNING, Messages.format(toAdd));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_SUCCESS, Messages.format(toAdd));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" return new CommandResult(finalMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"brendanng7":4,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" public String getPersonName() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" String[] parts \u003d feedbackToUser.split(\": \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return parts.length \u003e 1 ? parts[1].strip() : \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zyng233":4,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Deletes a person identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person at the specified {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person with the specified {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" Person personToDelete;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherDeleteCommand.targetIndex))","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherDeleteCommand.targetNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":31,"-":64}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" + \"by the index number used in the displayed person list or NRIC. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued) \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" + \"[\" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY] \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING \u003d \"Edited Person: %1$s\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" + \"Warning: There is an existing person with the same name, phone number or email.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":" this.nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" * @param nric of the person in the filtered person list to edit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" public EditCommand(Nric nric, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"linette-g"},"content":" this.index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" Person personToEdit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"linette-g"},"content":" Person editedPerson;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d model.getPersonByNric(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" String finalMessage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" if (model.hasSimilarPerson(editedPerson, personToEdit)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" return new CommandResult(finalMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDates \u003d editPersonDescriptor.getContactDates().orElse(personToEdit.getContactDates());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" CallFrequency updatedCallFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.getCallFrequency().orElse(personToEdit.getCallFrequency());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" return new Person(updatedNric, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"brendanng7"},"content":" contactDates, updatedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" return (index !\u003d null \u0026\u0026 index.equals(otherEditCommand.index)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" || (nric !\u003d null \u0026\u0026 nric.equals(otherEditCommand.nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"GabrielCWT"},"content":" private ContactDateList contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"GabrielCWT"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"GabrielCWT"},"content":" setContactDates(toCopy.contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" setCallFrequency(toCopy.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"brendanng7"},"content":" return CollectionUtil.isAnyNonNull(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Zenkoh1"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Zenkoh1"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Zenkoh1"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"GabrielCWT"},"content":" public Optional\u003cContactDateList\u003e getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"GabrielCWT"},"content":" return Optional.ofNullable(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":" public void setContactDates(ContactDateList contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates \u003d contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"brendanng7"},"content":" public Optional\u003cCallFrequency\u003e getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"brendanng7"},"content":" return Optional.ofNullable(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"brendanng7"},"content":" public void setCallFrequency(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Zenkoh1"},"content":" return Objects.equals(nric, otherEditPersonDescriptor.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(callFrequency, otherEditPersonDescriptor.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"linette-g":34,"Zenkoh1":28,"GabrielCWT":15,"brendanng7":20,"-":231}},{"path":"src/main/java/seedu/address/logic/commands/HistoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * Finds and lists the call history of the elderly in address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"public class HistoryCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public static final String COMMAND_WORD \u003d \"history\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" + \": List call history of the person identified by the index number or NRIC in the displayed person list.\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_SHOW_HISTORY_SUCCESS \u003d \"Call history of person: %1$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person at the specified {@code Index}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" * @param targetIndex The {@code Index} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person with the specified {@code Nric}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" * @param targetNric The {@code Nric} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Nric targetNric) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" Person personFound;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" personFound \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" personFound \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" if (personFound \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d model.getCallHistory(personFound);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return new CommandResult(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personFound.getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof HistoryCommand)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" HistoryCommand otherHistoryCommand \u003d (HistoryCommand) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherHistoryCommand.targetIndex))","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherHistoryCommand.targetNric));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" .toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":99}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.util.List;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * Marks a person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" * Identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" + \": Marks the person identified by the index number used in the displayed person list as contacted.\\n\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_MARK_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDate contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person at the specified {@code Index} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Index targetIndex, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person with the specified {@code Nric} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Nric targetNric, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" Person personToMark;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" personToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" personToMark \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":" if (personToMark \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" model.markAsContacted(personToMark, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" return new CommandResult(String.format(MESSAGE_MARK_PERSON_SUCCESS, Messages.format(personToMark)));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof MarkCommand)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand otherMarkCommand \u003d (MarkCommand) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" return ((targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherMarkCommand.targetIndex))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherMarkCommand.targetNric)))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" \u0026\u0026 contactDate.equals(otherMarkCommand.contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" .toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"GabrielCWT":71}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" PREFIX_EMAIL, PREFIX_CALL_FREQUENCY)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" Person person \u003d new Person(nric, name, phone, email, address, tagList, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":13,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" case HistoryCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" return new HistoryCommandParser().parse(arguments);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":4,"zyng233":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final Prefix PREFIX_CALL_FREQUENCY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final Prefix PREFIX_NOTES \u003d new Prefix(\"o/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"GabrielCWT":1,"brendanng7":1,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":7,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" Index index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" if (argMultimap.getValue(PREFIX_CALL_FREQUENCY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.setCallFrequency(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" return new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"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","isFullCredit":false},{"lineNumber":94,"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":15,"Zenkoh1":5,"brendanng7":9,"-":78}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" // TODO: Implement the logic for searching by NRIC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"-":33}},{"path":"src/main/java/seedu/address/logic/parser/HistoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" * Parses input arguments and creates a new HistoryCommand object","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParser implements Parser\u003cHistoryCommand\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" * Parses the given {@code String} of arguments in the context of the HistoryCommand","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * and returns a HistoryCommand object for execution.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public HistoryCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(nric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":33}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * and returns an MarkCommand object for execution.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" String notes \u003d argMultimap.getValue(PREFIX_NOTES).orElse(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" Index index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(index, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" Nric nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(nric, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":3,"GabrielCWT":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" * Parses a {@code String callFrequency} into an {@code CallFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" * @throws ParseException if the given {@code callFrequency} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"brendanng7"},"content":" public static CallFrequency parseCallFrequency(String callFrequency) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" String trimmedCallFrequency \u003d callFrequency.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(trimmedCallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"brendanng7"},"content":" throw new ParseException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"brendanng7"},"content":" return new CallFrequency(trimmedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Index}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingIndex(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Nric}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingNric(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"Zenkoh1":16,"brendanng7":16,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with a similar identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" return hasSimilarPerson(person, null);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with a similar identity as {@code person} exists in the address book,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" * excluding one person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" * @param exclude Person to exclude from the check (can be null)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" return persons.containsSimilarPerson(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":25,"-":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with similar identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" boolean hasSimilarPerson(Person person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with similar identity as {@code person} exists in the address book,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" * possibly excluding one person from the check.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" * @param exclude Person to exclude from the check (can be null)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" boolean hasSimilarPerson(Person person, Person exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Marks the given person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" void markAsContacted(Person target, ContactDate contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" * Returns the call history of the given person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" * Updates the displayed list to show the call history of the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":" * The call history must not be empty.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" void updateDisplayedList(ContactDateList callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" * Returns the displayed call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ContactDateList getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" Person getPersonByNric(Nric nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"linette-g":2,"Zenkoh1":20,"GabrielCWT":8,"zyng233":18,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final ObservableList\u003cString\u003e displayedCallHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" this.displayedCallHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return addressBook.hasSimilarPerson(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" requireAllNonNull(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" return addressBook.hasSimilarPerson(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(target);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" target.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" if (person.getNric().equals(nric)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" return person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" return null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"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","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Call History \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":" return target.getContactDates();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" requireNonNull(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" for (ContactDate date : callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.add(date.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" for (String call : displayedCallHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" ContactDate contactDate \u003d new ContactDate(call, \"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" callHistory.add(contactDate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" return callHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 displayedCallHistory.equals(otherModelManager.displayedCallHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"linette-g":11,"Zenkoh1":12,"GabrielCWT":6,"zyng233":33,"-":147}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" * Represents a Person\u0027s contacted date in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactDate(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" \"Dates should be in the format of YYYY-MM-DD\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public final LocalDate value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code ContactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" * @param date A valid date and time.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate(String date, String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" checkArgument(isValidContactDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" value \u003d LocalDate.parse(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public static boolean isValidContactDate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" LocalDate.parse(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" * Returns the current date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" public static ContactDate createCurrentDate(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(LocalDate.now().toString(), notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" * Returns a new {@code ContactDate} that is a specified number of days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" * The number of days is determined by the {@code callFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency The frequency of calls, represented as a {@code CallFrequency} object,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" * which determines how many days to add to the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" * @return A new {@code ContactDate} that is {@code callFrequency} days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"brendanng7"},"content":" public ContactDate add(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"brendanng7"},"content":" int daysToAdd \u003d Integer.parseInt(callFrequency.value); // Parse the number of days from callFrequency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(value.plusDays(daysToAdd).toString(), \"\"); // Create and return a new ContactDate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" return value.toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" public String getNotes() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" return notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof ContactDate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" ContactDate otherDate \u003d (ContactDate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" return value.equals(otherDate.value) \u0026\u0026 notes.equals(otherDate.notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":82,"zyng233":2,"brendanng7":15}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * Represents a List of ContactDates in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateList extends ArrayList\u003cContactDate\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Creates a ContactDateList with the given ContactDates.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDatesToAdd","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ContactDate ...contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ArrayList\u003cContactDate\u003e contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" super(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * Adds all the ContactDates in the given ContactDateList to this ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDateList","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" public void addAll(ContactDateList contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Adds the current date to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.add(ContactDate.createCurrentDate(notes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" * Adds the given ContactDate to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDate","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" * Returns the last ContactDate in the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" * @return the most recent ContactDate.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" * @throws IndexOutOfBoundsException if the list is empty.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" if (this.size() \u003d\u003d 0) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" throw new IndexOutOfBoundsException(\"No ContactDates in the list.\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" return this.get(this.size() - 1);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof ContactDateList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" ContactDateList that \u003d (ContactDateList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (this.size() \u003d\u003d that.size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" if (!this.get(i).equals(that.get(i))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":74,"zyng233":14}},{"path":"src/main/java/seedu/address/model/person/CallFrequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":" * Represents a Person\u0027s call frequency in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCallFrequency(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"public class CallFrequency {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" \"Calling frequency is in days and has to be a positive number less than or equal to 7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-7]$\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" * Constructs a {@code CallFrequency}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency A valid date.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" public CallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":" checkArgument(isValidCallFrequency(callFrequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" value \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * Returns true if a given string is a valid call frequency.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" public static boolean isValidCallFrequency(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" if (!(other instanceof CallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency otherCallFrequency \u003d (CallFrequency) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" return value.equals(otherCallFrequency.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as emails are case-insensitive","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherEmail.value);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"-":78}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as names are case-insensitive","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" return fullName.equalsIgnoreCase(otherName.fullName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"-":66}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"public class Nric {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" \"Please ensure that the NRIC is a valid one issued by the Singapore government.\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" /*","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" * NRIC should start with S, T, F or G followed by 7 digits and end with a character.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)^([STFG])(\\\\d{7})([A-Z])$\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" public final String value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" value \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" Pattern r \u003d Pattern.compile(VALIDATION_REGEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" Matcher m \u003d r.matcher(test);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" if (m.find()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return isValidCheckSum(m.group(1), m.group(2), m.group(3));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the checksum of the NRIC is valid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" * Checksum as used by the Singapore government to validate NRIC numbers.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" * Any magic numbers or characters used in the method are based on the checksum algorithm.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" * @param firstChar The first character of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" * @param middleDigits The middle 7 digits of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" * @param lastChar The last character of the NRIC number, the checksum.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" * @return true if the checksum is valid, false otherwise.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" private static boolean isValidCheckSum(String firstChar, String middleDigits, String lastChar) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // Weights for each digit in the NRIC number (in order).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" int[] weights \u003d {2, 7, 6, 5, 4, 3, 2};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" int sum \u003d 0;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" // Multiply each digit in the NRIC number by its weight i.e. 2 7 6 5 4 3 2 in order.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" for (int i \u003d 0; i \u003c middleDigits.length(); i++) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d Integer.parseInt(middleDigits.substring(i, i + 1)) * weights[i];","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // If the first letter of the NRIC starts with T or G, add 4 to the total.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"T\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d 4;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" // Find the remainder of (sum calculated above) mod 11","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" int remainder \u003d sum % 11;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"S\") || firstChar.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"J\", \"Z\", \"I\", \"H\", \"G\", \"F\", \"E\", \"D\", \"C\", \"B\", \"A\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" } else if (firstChar.equalsIgnoreCase(\"F\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"X\", \"W\", \"U\", \"T\", \"R\", \"Q\", \"P\", \"N\", \"M\", \"L\", \"K\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // Should never reach here as the first character of the NRIC should be S, T, F or G,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" // and this is already checked in the isValidNric method.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assert false : \"Invalid first character of NRIC\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public String toString() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" return value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as NRIC is case-insensitive","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherNric.value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":118}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDateList contactDates \u003d new ContactDateList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private final CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" ContactDateList contactDates, CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" requireAllNonNull(nric, name, phone, email, address, tags, contactDates, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" * For creating a new person. Every field but contact date must be present and not null.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" this(nric, name, phone, email, address, tags, new ContactDateList(ContactDate.createCurrentDate(\"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" public Nric getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" return nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" return contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return contactDates.getLastContacted();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" public CallFrequency getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" return callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"brendanng7"},"content":" public ContactDate getNextContactDate() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"brendanng7"},"content":" return getLastContacted().add(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Mark the person as contacted today.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" contactDates.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons are the same as defined in {@code isSamePerson(Person otherPerson)}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" * or if their name, phone number or email are the same.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" * This defines the weakest notion of equality between two persons.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" * @param otherPerson The other person to compare with.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" * @return True if the persons are similar, false otherwise.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" public boolean isSimilarPerson(Person otherPerson) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":" if (isSamePerson(otherPerson)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" if (otherPerson \u003d\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" return otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":" || otherPerson.getPhone().equals(getPhone())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" || otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" return Objects.hash(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":30,"GabrielCWT":27,"brendanng7":15,"-":116}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"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","isFullCredit":false},{"lineNumber":17,"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","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the list contains a similar person as the given argument, possibly excluding one person from","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * the check.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" public boolean containsSimilarPerson(Person toCheck, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return internalList.filtered(person -\u003e !person.equals(exclude))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" .anyMatch(toCheck::isSimilarPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"-":150}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7083906G\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"friends\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S0964515B\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\", \"friends\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7419603I\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"neighbours\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"7\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S9496815A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"family\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S8388963B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"classmates\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7495552E\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"3\"))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":8,"brendanng7":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" * Jackson-friendly version of {@link ContactDate}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"ContactDate\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private final String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code JsonAdaptedContactDate} with the given {@code contactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" @JsonCreator","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(@JsonProperty(\"date\") String date, @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Converts a given {@code ContactDate} into this class for Jackson use.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(ContactDate source) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" date \u003d source.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" * Converts this Jackson-friendly adapted contact date object into the model\u0027s {@code ContactDate} object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" if (!ContactDate.isValidContactDate(date)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(ContactDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" if (notes \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private final String nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" private final List\u003cJsonAdaptedContactDate\u003e contactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" private final String callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"contactDates\") List\u003cJsonAdaptedContactDate\u003e contactDates,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"callFrequency\") String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates !\u003d null) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d source.getNric().value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d source.getCallFrequency().value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" contactDates.addAll(source.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" final ArrayList\u003cContactDate\u003e personContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList.class.getSimpleName()));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" for (JsonAdaptedContactDate contactDate : contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" personContactDates.add(contactDate.toModelType());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"brendanng7"},"content":" if (callFrequency \u003d\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"brendanng7"},"content":" CallFrequency.class.getSimpleName()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(callFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" final CallFrequency modelCallFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" final ContactDateList modelContactDates \u003d new ContactDateList(personContactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"brendanng7"},"content":" return new Person(modelNric, modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"brendanng7"},"content":" modelContactDates, modelCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":21,"brendanng7":18,"-":105}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_SIMILAR_PERSON \u003d \"\"\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" %s","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" has the same name, phone number or email as someone else in the list.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" Double check to ensure that this is not a duplicate.\"\"\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonSerializableAddressBook.class);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" if (addressBook.hasSimilarPerson(person)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" logger.info(String.format(MESSAGE_SIMILAR_PERSON, person));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"-":60}},{"path":"src/main/java/seedu/address/ui/CallHistoryCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" * An UI component that displays information of a {@code CallHistory}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"public class CallHistoryCard extends UiPart\u003cHBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryCard.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private Label indexLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" private Label contactDateLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryCard} with the given {@code CallHistory} and index to display.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" public CallHistoryCard(ContactDate contactDate, int index) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" indexLabel.setText(index + \". \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" contactDateLabel.setText(contactDate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":28}},{"path":"src/main/java/seedu/address/ui/CallHistoryPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" * Panel containing the list of call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"public class CallHistoryPanel extends UiPart\u003cVBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryPanel.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" private ListView\u003cContactDate\u003e callHistoryView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" private ObservableList\u003cContactDate\u003e items;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryPanel}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" public CallHistoryPanel() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" items \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" callHistoryView.setItems(items);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" callHistoryView.setCellFactory(param -\u003e new ListCell\u003c\u003e() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" protected void updateItem(ContactDate contactDate, boolean empty) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" super.updateItem(contactDate, empty);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" if (empty || contactDate \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" setText(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" int index \u003d getIndex() + 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" CallHistoryCard card \u003d new CallHistoryCard(contactDate, index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" setGraphic(card.getRoot());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" });","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" * Initializes the call history panel with the given {@code ContactDateList}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" public void initializeCallHistory(ContactDateList history) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" items.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" items.addAll(FXCollections.observableArrayList(history));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" private StackPane mainListPanelPlaceholder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" private CallHistoryPanel callHistoryPanel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":" callHistoryPanel \u003d new CallHistoryPanel();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" String personName \u003d commandResult.getPersonName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" if (commandResult.getFeedbackToUser().contains(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personName))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" updateCallHistory();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" updatePersonListPanel();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" private void updateCallHistory() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" callHistoryPanel.initializeCallHistory(logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"zyng233"},"content":" private void updatePersonListPanel() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"zyng233":34,"-":194}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private Label nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" @FXML","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" private Label lastContacted;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" @FXML","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" private Label callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" nric.setText(person.getNric().value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" lastContacted.setText(person.getLastContacted().toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" callFrequency.setText(person.getCallFrequency().toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":3,"GabrielCWT":3,"brendanng7":3,"-":59}},{"path":"src/main/resources/view/CallHistoryCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"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-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"indexLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDateLabel\" styleClass\u003d\"cell_big_label\"/\u003e \u003c!-- Change fx:id to match Java code --\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDate\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":20}},{"path":"src/main/resources/view/CallHistoryPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":" \u003cListView fx:id\u003d\"callHistoryView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" \u003cStackPane fx:id\u003d\"mainListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"zyng233":1,"-":59}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" text\u003d\" - \" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" \u003cLabel fx:id\u003d\"lastContacted\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastContacted\" /\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" \u003cLabel fx:id\u003d\"callFrequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$callFrequency\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":5,"GabrielCWT":1,"brendanng7":1,"-":33}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" public void getCallHistory_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" callHistory.add(new ContactDate(\"2021-01-01\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" assertEquals(callHistory, logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NRIC_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"zyng233":10,"brendanng7":3,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void execute_personAcceptedByModelWithWarning_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" new AddCommand(ALICE).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" Person alice2 \u003d new PersonBuilder().withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" CommandResult commandResult \u003d new AddCommand(alice2).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS_WITH_WARNING, Messages.format(alice2)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(Arrays.asList(ALICE, alice2), modelStub.personsAdded);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Zenkoh1"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"linette-g"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Zenkoh1"},"content":" return personsAdded.stream().anyMatch(person::isSimilarPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":29,"GabrielCWT":5,"zyng233":17,"-":203}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" public void getPersonName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // Test case 1: Valid format with a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" CommandResult commandResult \u003d new CommandResult(\"User: John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertEquals(\"John Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // Test case 2: No colon in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" // Test case 3: Empty string in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" // Test case 4: Colon but no name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // Test case 5: Colon with spaces and name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: Jane Doe \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" assertEquals(\"Jane Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09","isFullCredit":false}],"authorContributionMap":{"zyng233":23,"-":63}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_AMY \u003d \"S3862905J\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_BOB \u003d \"S3233528D\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALID_NOTES \u003d \"This is a note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_AMY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_BOB \u003d \"5\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" public static final String NOTES_DESC \u003d \" \" + PREFIX_NOTES + VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_AMY \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_BOB \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"S1234567A\"; // \u0027A\u0027 is not a valid checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"brendanng7"},"content":" public static final String INVALID_CALL_FREQUENCY_DESC \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + \"8\"; // Call frequency must be at most 7 days","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"GabrielCWT":3,"brendanng7":12,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNric \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteSecondNric \u003d new DeleteCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNricCopy \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(deleteSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandForIndex \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, deleteCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandWithNric \u003d new DeleteCommand(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, deleteCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getNric());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" DeleteCommand markCommand \u003d new DeleteCommand(unregisteredNric);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"linette-g":60,"-":116}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" public void execute_similarPersonUnfilteredList_successWithWarning() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(firstPerson.getName().fullName)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" Person secondPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" Person editedPerson \u003d new PersonBuilder(secondPerson).withName(firstPerson.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" expectedModel.setPerson(secondPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Zenkoh1"},"content":" public void execute_similarPersonFilteredList_successWithWarning() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Zenkoh1"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Zenkoh1"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Zenkoh1"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(personInList.getName().fullName)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Zenkoh1"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Zenkoh1"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Zenkoh1"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withName(personInList.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Zenkoh1"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Zenkoh1"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"linette-g"},"content":" final EditCommand standardCommand \u003d new EditCommand(new Nric(VALID_NRIC_AMY), DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"linette-g"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new Nric(VALID_NRIC_AMY), copyDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"linette-g"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_BOB), DESC_AMY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"linette-g"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_AMY), DESC_BOB)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"linette-g"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForIndex \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"linette-g"},"content":" + \", nric\u003dnull, editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"linette-g"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, editCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForNric \u003d new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d EditCommand.class.getCanonicalName() + \"{index\u003dnull, nric\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"linette-g"},"content":" + nric + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, editCommandForNric.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"linette-g"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"linette-g"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(personToEdit.getNric(), descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"linette-g"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"linette-g"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"linette-g"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(unregisteredNric, descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"linette-g":66,"Zenkoh1":42,"-":181}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" //different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" + editPersonDescriptor.getNric().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", call frequency\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getCallFrequency().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"brendanng7":2,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/HistoryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" * Contains integration tests (interaction with the Model) for {@code HistoryCommand}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" public void equals() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" HistoryCommand secondHistoryCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommandCopy));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(secondHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Index","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommandCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(historySecondCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Nric","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"zyng233"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNric \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondNric \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNricCopy \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNricCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(historySecondNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" public void execute_validNricFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" public void execute_validNricUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithIndex \u003d new HistoryCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" String expected \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" assertEquals(expected, historyCommandWithIndex.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithNric \u003d new HistoryCommand(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" String expectedNricString \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedNricString, historyCommandWithNric.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":219}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" * {@code MarkCommand}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondCommand \u003d new MarkCommand(INDEX_SECOND_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandCopy \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandDifferentDate \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markFirstCommandDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNric \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondNric \u003d new MarkCommand(new Nric(VALID_NRIC_BOB), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricCopy \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricDifferentDate \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstNric.equals(markFirstNricDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(markSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithIndex \u003d new MarkCommand(targetIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, markCommandWithIndex.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithNric \u003d new MarkCommand(targetNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, markCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(personToMark.getNric(), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(unregisteredNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":53,"GabrielCWT":137}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CALL_FREQUENCY_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" String validExpectedPersonString \u003d NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // multiple nrics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" validExpectedPersonString + NRIC_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"brendanng7"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE, PREFIX_CALL_FREQUENCY));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, NRIC_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" // missing nric prefix","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"brendanng7"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"brendanng7"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"brendanng7"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"brendanng7"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"brendanng7"},"content":" // invalid call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"brendanng7"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_CALL_FREQUENCY_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"brendanng7"},"content":" CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + CALL_FREQUENCY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"brendanng7"},"content":" + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":42,"brendanng7":38,"-":163}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand command \u003d (MarkCommand) parser.parseCommand(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" + \" \" + NOTES_DESC);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(new MarkCommand(INDEX_FIRST_PERSON, validDate), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" public void parseCommand_history() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" HistoryCommand command \u003d (HistoryCommand) parser.parseCommand(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" HistoryCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(new HistoryCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":14,"zyng233":8,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new DeleteCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"-":31}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1 q/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" // invalid NRIC that fails NRIC validation","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"S1234567Z\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsEditCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" String userInput \u003d targetNric + PHONE_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetNric, descriptor);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" // nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Zenkoh1"},"content":" // name","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Zenkoh1"},"content":" userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Zenkoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"brendanng7"},"content":" // call frequency","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"brendanng7"},"content":" userInput \u003d targetIndex.getOneBased() + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"brendanng7"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":22,"zyng233":16,"brendanng7":11,"-":198}},{"path":"src/test/java/seedu/address/logic/parser/HistoryCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParserTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private HistoryCommandParser parser \u003d new HistoryCommandParser();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" public void parse_validArgs_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, \"1\", new HistoryCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new HistoryCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":31}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" * outside of the MarkCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" * same path through the MarkCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\" + NOTES_DESC, new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY + NOTES_DESC, new MarkCommand(new Nric(VALID_NRIC_AMY), validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" public void parse_emptyNotes_returnsMarkCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(\"\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\", new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"GabrielCWT":43}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d \"S0431600B\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNric((String) null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNric(INVALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithoutWhitespace_returnsNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(VALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithWhitespace_returnsTrimmedNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" String nricWithWhitespace \u003d WHITESPACE + VALID_NRIC + WHITESPACE;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(nricWithWhitespace));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":219,"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":27,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(addressBook.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBookWithExclude_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(addressBook.hasSimilarPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameName_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSamePhoneNumber_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withPhone(ALICE.getPhone().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameEmail_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(ALICE.getEmail().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":51,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(modelManager.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBookWithExclude_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(modelManager.hasSimilarPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameName_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSamePhoneNumber_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withPhone(ALICE.getPhone().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameEmail_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(ALICE.getEmail().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":54,"-":132}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateListTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" // Throws IndexOutOfBoundsException when list is empty","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.getLastContacted();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(true);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" // test 1","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // test 2","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" ContactDate newContactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(newContactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(newContactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted_contactDateProvided() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateListCopy \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy2 \u003d new ContactDateList(new ContactDate(\"2021-10-10\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy3 \u003d new ContactDateList(new ContactDate(\"2021-10-11\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDateList.equals(contactDateList));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // different object, same types, same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" assertTrue(contactDateList.equals(contactDateListCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // different object, same types, different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" assertFalse(contactDateListCopy2.equals(contactDateListCopy3));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":68,"zyng233":7}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactDate(null, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_invalidContactDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" String invalidContactDate \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactDate(invalidContactDate, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" public void isValidContactDate() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" // null tag contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactDate.isValidContactDate(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" // invalid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-13-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-01-32\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" // valid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(ContactDate.isValidContactDate(\"2020-01-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" public void createCurrentDate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.value, currentDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.getNotes(), VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" public void addCallFrequency_validCallFrequency_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withDate(\"2020-01-01\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" ContactDate newContactDate \u003d contactDate.add(callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" ContactDate targetContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-08\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" assertEquals(newContactDate, targetContactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDateCopy \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDateCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" // different contact date -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-02\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentContactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentNotes \u003d new ContactDateBuilder().withNotes(\"Different notes\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentNotes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":77,"brendanng7":7}},{"path":"src/test/java/seedu/address/model/person/CallFrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"public class CallFrequencyTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e new CallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public void constructor_invalidCallFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":" String invalidCallFrequency \u003d \"8\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CallFrequency(invalidCallFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" public void isValidCallFrequency() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" // null call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e CallFrequency.isValidCallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" // invalid call frequencies","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"8\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"0\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" // valid call frequencies which are between 1 and 7 inclusive","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"1\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"2\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"3\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"4\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"5\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"6\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"7\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(new CallFrequency(\"7\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(5.0f));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(new CallFrequency(\"5\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"public class NricTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public void isValidNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" // null nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"232323\")); // just numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S64065D\")); // only 5 digits","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542Z\")); // wrong checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"P6406542D\")); // starting with P","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542232Z\")); // too long","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" // valid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"s6406542d\")); // lowercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"S6406542D\")); // uppercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"T5517825E\")); // starting with T","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"F3895385X\")); // starting with F","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"G8413738W\")); // starting with G","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d new Nric(\"S6406542D\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"S6406542D\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" // same values with different case -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"s6406542d\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(new Nric(\"S9798929Z\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":66}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" // nric differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // nric has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public void isSimilarPerson() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(ALICE.isSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.isSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(ALICE.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" // same name -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" // same name lowercase -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" // same phone -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" // same email -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":" // same email lowercase -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" // different nric, name, phone, email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"GabrielCWT"},"content":" person.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" // 1 contact date added on initialisation and another added by markAsContacted","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(2, person.getContactDates().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(person.getContactDates().getLastContacted(), person.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" + \", name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", call frequency\u003d\" + ALICE.getCallFrequency() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":58,"GabrielCWT":17,"brendanng7":5,"-":87}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.storage.JsonAdaptedContactDate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDateTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_DATE \u003d \"2024-13-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private static final String VALID_DATE \u003d \"2024-01-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_validContactDateDetails_returnsContactDate() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, jsonContactDate.toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(INVALID_DATE, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d ContactDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(null, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullNotes_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(VALID_DATE, null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_CONTACT_DATE \u003d \"2020-13-01\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private static final String INVALID_CALL_FREQUENCY \u003d \"0\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" private static final List\u003cJsonAdaptedContactDate\u003e VALID_CONTACT_DATES \u003d BENSON.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" private static final String VALID_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" invalidTags, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidContactDates_throwsIllegalValueException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e invalidContactDates \u003d new ArrayList\u003c\u003e(VALID_CONTACT_DATES);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" invalidContactDates.add(new JsonAdaptedContactDate(INVALID_CONTACT_DATE, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, invalidContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_emptyContactDates_returnsPerson() throws Exception {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e emptyContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, emptyContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" public void toModelType_invalidCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, INVALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d CallFrequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"brendanng7"},"content":" public void toModelType_nullCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CallFrequency.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":14,"GabrielCWT":31,"brendanng7":32,"-":99}},{"path":"src/test/java/seedu/address/testutil/ContactDateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * A utility class to help with building ContactDate objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_DATE \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_NOTES \u003d \"This is a default note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" private String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" private String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Creates a {@code ContactDateBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" date \u003d DEFAULT_DATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d DEFAULT_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" * Initializes the ContactDateBuilder with the data of {@code contactDateToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder(ContactDate contactDateToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" date \u003d contactDateToCopy.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d contactDateToCopy.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Date} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withDate(String date) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Notes} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withNotes(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * Builds the ContactDate object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" return ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"brendanng7"},"content":" public EditPersonDescriptorBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"brendanng7"},"content":" descriptor.setCallFrequency(new CallFrequency(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"brendanng7":10,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" public static final String DEFAULT_NRIC \u003d \"S6253973I\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" public static final String DEFAULT_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d new CallFrequency(DEFAULT_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d personToCopy.getCallFrequency();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"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","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"brendanng7"},"content":" public PersonBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" return new Person(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"brendanng7":14,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" sb.append(PREFIX_NRIC + person.getNric().value + \" \");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" sb.append(PREFIX_CALL_FREQUENCY + person.getCallFrequency().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" descriptor.getNric().ifPresent(nric -\u003e sb.append(PREFIX_NRIC).append(nric.value).append(\" \"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"S5207047C\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"S0233700B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"S6192793Z\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S0589789J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S5674593I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"S1092693I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"S8596794J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"S5594223D\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"S1751126B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"brendanng7"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":24,"zyng233":4,"brendanng7":22,"-":54}}] diff --git a/AY2425S1-CS2103T-F14b-3_tp_master/commits.json b/AY2425S1-CS2103T-F14b-3_tp_master/commits.json index 0def9b77..91223d63 100644 --- a/AY2425S1-CS2103T-F14b-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"linette-g":[{"date":"2024-09-24","commitResults":[{"hash":"1abc3a3937542d2bf79dbc715f3835c2fc9ea96f","isMergeCommit":false,"messageTitle":"Update AboutUs for Linette","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"d7ad478a9335e999c9d06e3db5def178163b1758","isMergeCommit":true,"messageTitle":"Merge pull request #24 from brendanng7/branch-add-aboutus","messageBody":"Update AboutUs for Brendan","fileTypesAndContributionMap":{}},{"hash":"24b222e39e0f7871d698b3529e78d00940f682f5","isMergeCommit":false,"messageTitle":"Update email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14479f4ad297a2c238dd67985f382d20f9215b92","isMergeCommit":false,"messageTitle":"Update email in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"989253feb82de7ab49d86a1391e29b5e61f1e467","isMergeCommit":false,"messageTitle":"Update link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-25","commitResults":[{"hash":"42f14fd98b42836fcb337a10e34ebc60fcc79061","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"cb2191565ee6907867ac23ab0b8fe062a90c5933","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf769100bf511a33f88a8d913ba49d0e7983a51e","isMergeCommit":false,"messageTitle":"Update mark and delete command to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":94,"deletions":21}}},{"hash":"b3cac6bc4e4f0b9a1942304e5e2eb0477e28be1c","isMergeCommit":false,"messageTitle":"Update JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":5}}},{"hash":"d804de205bc84df25b53ae251f2f5ceefd2b56f5","isMergeCommit":false,"messageTitle":"Update MarkCommand tests to include NRIC","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":3}}},{"hash":"f236e6c554f2e48874860b3edc55c71b7d270ce8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":10}}},{"hash":"836eededd065c9b5ca10a9f0fb939abb1e7f233d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-extend-nric","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f21ed093ae8c586b8a240640210996fff64c7d31","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dedd651d412e2d159c86525ae011096ec79cc88b","isMergeCommit":false,"messageTitle":"Update imports to single imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"506e491c7c1f8581f38dd72a461bd287e1b4e43f","isMergeCommit":false,"messageTitle":"Update delete command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2024-10-04","commitResults":[{"hash":"1b9d3a8c5019fe08d1c897585cbbad72ada76cc5","isMergeCommit":false,"messageTitle":"Update EditCommand to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16},"test-code":{"insertions":86,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"7dfcbd72e4d9c023381895d658f63c7e8e5b7a20","isMergeCommit":true,"messageTitle":"Merge pull request #49 from zyng233/add-history-call","messageBody":"Add history call command with NRIC and Index","fileTypesAndContributionMap":{}}]}],"Zenkoh1":[{"date":"2024-09-24","commitResults":[{"hash":"931d00dc64c2d592db8a58010912091e00941e52","isMergeCommit":false,"messageTitle":"Edit AboutUs for Zen","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"16f47042f0e1c951bcb73e1d035703e4e9f84ab0","isMergeCommit":true,"messageTitle":"Merge pull request #28 from linette-g/branch-aboutus","messageBody":"Update AboutUs for Linette","fileTypesAndContributionMap":{}},{"hash":"7fa2fd0fcba8ef4a63ff34b0de17efc1b0ed2945","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zyng233/add-AboutUs","messageBody":"Update AboutUs for Ziying","fileTypesAndContributionMap":{}},{"hash":"618ca3a99ef60286641fada6401b475729e6adcd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from brendanng7/branch-update-site-wide-settings","messageBody":"Update site wide settings for team F14b-3","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"d25242f82a29a9d9222ce6ab44911a5692f32f4f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from GabrielCWT/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"3dd6b394d92c800645c2d6bfcdfd49c18003438f","isMergeCommit":false,"messageTitle":"Add Nric field to person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":45},"test-code":{"insertions":282,"deletions":145}}},{"hash":"630524c0179ff9093d7c4c5960be13a678ad5c74","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":87,"deletions":15}}},{"hash":"f155b355016e7fe340951ef7bef67ec83bcb69d6","isMergeCommit":false,"messageTitle":"Revert some changes from SceneBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5}}},{"hash":"2801d44eb9e0654a282f22839314430bc6f05dde","isMergeCommit":false,"messageTitle":"Add somemore nric validation tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"3aff821cc0ba6f2c5b749cfd6616ef796505145f","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GabrielCWT/mark-as-contacted","messageBody":"Implement mark elderly as contacted","fileTypesAndContributionMap":{}},{"hash":"e19cb0715e8b1f4b1b88e076c4ecfc57f7dcf493","isMergeCommit":false,"messageTitle":"Improve code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"9461f0a484e36bb865e6724de02185d31f2a31fd","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Zenkoh1/improve-code-style-nric","messageBody":"Improve code style for nric implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"3bb9e35359a930cb37275da7fc979c4589eded2c","isMergeCommit":false,"messageTitle":"Improve Nric test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"e0126b9520f0af0005fbe00332cd674123025a8e","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Zenkoh1/improve-nric-test-cases","messageBody":"Improve Nric test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"3ef0ff7da87d821bd72396fa73c72f7a0e24187d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from brendanng7/branch-list-sort-priority","messageBody":"Add Call frequency field for branch list sorting in the future","fileTypesAndContributionMap":{}}]}],"GabrielCWT":[{"date":"2024-09-24","commitResults":[{"hash":"e5c72956b75f1e4e2d17b330574b82d6cefcfb7c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"d043b43275c70bebc3823fcbfe09ccbadfaf709e","isMergeCommit":false,"messageTitle":"Add gabriel\u0027s portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":0}}},{"hash":"d2691ff8d48c90a5bca1d6325f576b349430b916","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Zenkoh1/edit-aboutus-zen","messageBody":"Update AboutUs for Zen","fileTypesAndContributionMap":{}},{"hash":"b3ab93d3bc6653571733ae13cf4b3198cd345ae2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"7ed84132cd834582ea30a86c49232d963a3deec6","isMergeCommit":false,"messageTitle":"Update value proposition and user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9213cf4a3bb74de0e94a199f05a0beb88704cd52","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":7}}}]},{"date":"2024-09-25","commitResults":[{"hash":"0b91794fbe7f116dc75673f48191afa8697f2369","isMergeCommit":false,"messageTitle":"Add use cases, NFR and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":105,"deletions":22}}},{"hash":"18a19cafd34e5660c6b316694946e85647a19091","isMergeCommit":false,"messageTitle":"Add missing use case ends for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"99a16c8be5b45e8b513da187d47b8f992732ed9f","isMergeCommit":false,"messageTitle":"Add missing underlines for inclusions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d7065e1b1ebbbf1016ae183c40da5d173fc2beb3","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"713558f351ce379151a3c4a4aeefcbe7f130a0b3","isMergeCommit":false,"messageTitle":"Implement ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":0}}},{"hash":"cfa7426da5e718622be30c53f77cb1e00530a762","isMergeCommit":false,"messageTitle":"Add ContactDateList to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":7}}},{"hash":"15c01bba71c79e0e06b6a4052b922342149a4f5a","isMergeCommit":false,"messageTitle":"Refactor files to accommodate for schema change","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":2}}},{"hash":"6e6a4466c6e8fc1217ed504d6bee1090e9340e01","isMergeCommit":false,"messageTitle":"Implement GUI for last contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d97916deaae9f64c65d8c439063efdb918f58410","isMergeCommit":false,"messageTitle":"Fix constructors for ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"53629d56cd478e05d336ab72a823a8ec66bce293","isMergeCommit":false,"messageTitle":"Implement JSON structure for contact dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"dfa0e5f1deddc9c8e2700ec539e6d12c164a9405","isMergeCommit":false,"messageTitle":"Remove contact date from toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a2c7b411aa91ca13a4ed0f60fcbede3d49d85a7b","isMergeCommit":false,"messageTitle":"Fix isValidContactDate validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d299e01a651a190a7eecf76b8570acdc2db91d72","isMergeCommit":false,"messageTitle":"Update tests to include contact dates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":9}}}]},{"date":"2024-10-01","commitResults":[{"hash":"8546f091ecdb592d66957eb65678af1ba9faa7de","isMergeCommit":false,"messageTitle":"Implement MarkCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":143,"deletions":0}}},{"hash":"3e63e4f7f70dae7abd9acaca0dea00dfab3684d5","isMergeCommit":false,"messageTitle":"Implement test for Person markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ef49d22c2f7dc71a903836c14274069b4b8ef947","isMergeCommit":false,"messageTitle":"Implement tests for ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"88a066008976a27503a6c358a55f083f74005d40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":2},"test-code":{"insertions":21,"deletions":17}}},{"hash":"ed7ad3bbdcc0d61ba6e52b39a9739f3ec627a2cf","isMergeCommit":false,"messageTitle":"Fix test for markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"01128b86d8aebf358de86384514607b5be19dd6b","isMergeCommit":false,"messageTitle":"Add missing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"87a22df0c41af4f97350864e90b44f2effbbef4c","isMergeCommit":false,"messageTitle":"Fix list not updated upon marking as contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":0,"deletions":1}}},{"hash":"c5ba2ed57cbf244feda03497f57423c645272070","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":42,"deletions":0}}},{"hash":"86083ce2a1806f2ac23ca0c7ba9918c29a380578","isMergeCommit":false,"messageTitle":"Implement error when accessing empty ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"4111a1fa6797769cb78ca0aaca79709b64a417f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Zenkoh1/add-person-nric","messageBody":"Add person NRIC field","fileTypesAndContributionMap":{}},{"hash":"aefb29376fb668b4668fe7b0409abb4476e7a6a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mark-as-contacted","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ad4a2f9c64b48f638fb52e1f4512fbd90215a0","isMergeCommit":false,"messageTitle":"Add mark as contact date with date provided","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"2873295415ccf6268ebc10507522903e7d4a789f","isMergeCommit":false,"messageTitle":"Implement handling of empty list when parsing JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"025fdcab7674cf3719b826ce9de2404d5a251c5b","isMergeCommit":false,"messageTitle":"Implement test for empty contact date list","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"26f3021d5398c351739e55eb58c7eedd72b8b62d","isMergeCommit":false,"messageTitle":"Add notes to the parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"b0be53d2230057d7b37224cc3bae9c8953093cef","isMergeCommit":false,"messageTitle":"Update functions to accept notes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":17}}},{"hash":"1fe91aed23672b9f4ea62ebb6fb461e88c1508e1","isMergeCommit":false,"messageTitle":"Add notes prefix as static variable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"00ff0b27914974cf1bcd19de9b533dd63e9e6259","isMergeCommit":false,"messageTitle":"Add notes to JSON helper for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}},{"hash":"4eece4474446ddd08d9fe8b9e584844190529da2","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"e8ee62804e3d649ab7599377688c7c34e0430152","isMergeCommit":false,"messageTitle":"Implement ContactDateBuilder for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"f88961cea0e8cbc3be846de77b9cd8cca6401f6d","isMergeCommit":false,"messageTitle":"Update tests and use ContactDateBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":34}}},{"hash":"b2a38dbc66841b6ab9b5998d796474ee4b123dc2","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"85624dab82c72ef63359ee1a200d9a3863694dbd","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"23df5d72e4812582e6f7eb515f498eae178aaf61","isMergeCommit":false,"messageTitle":"Implement more tests for ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"12655a80b9f7e2540be3c9ab28316680d0ddd794","isMergeCommit":false,"messageTitle":"Add null check for date in json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"499441a23b2a3b3bf20096d103220582420cef7a","isMergeCommit":false,"messageTitle":"Implement tests for json ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"ce02e55716afba5e75abfdef1b5ca1891fa3a375","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-notes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"515da4494cf5607463627a53646a76716668fb6e","isMergeCommit":false,"messageTitle":"Fix add function for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"zyng233":[{"date":"2024-09-24","commitResults":[{"hash":"eb93f87e49f4790a91ac25a9da354a7f19542522","isMergeCommit":false,"messageTitle":"add ziying AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"194bfe9dbed7c2b6ec633c7ec96f0bccd237fce1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8afd1e674c1bd3f45fd5cdc25c53f69bee61aad1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfde96c7e9b8b5d266d4bbe59657b075738f422c","isMergeCommit":false,"messageTitle":"add johndoe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":51}}},{"hash":"4703457f800c621e5d468089ff510a436641b5d9","isMergeCommit":false,"messageTitle":"update the md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f94ac714e9a756d1c801f02918961fbbfe474b8a","isMergeCommit":false,"messageTitle":"update the all md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-25","commitResults":[{"hash":"b2a4d50fcc75483db11792e8806355277fa60786","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e43c6ae58c1fb8f7d53c834934a31e71aa9ca84b","isMergeCommit":true,"messageTitle":"fetch with the upstream","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"8ec66548d987e1502ceab0fadb2919b3ec5d2999","isMergeCommit":true,"messageTitle":"Merge pull request #46 from linette-g/branch-extend-nric","messageBody":"Extend commands to support NRIC","fileTypesAndContributionMap":{}},{"hash":"3b238e62cdd1805f159674ab2955def8ddc6d1f8","isMergeCommit":false,"messageTitle":"Add history command with index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":370,"deletions":9},"test-code":{"insertions":211,"deletions":2}}},{"hash":"c3d7672cd54aeae740f3f109c11f1f7b9582e025","isMergeCommit":true,"messageTitle":"fetch from the upstream to implement history command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"506ee942faaa3b0686e15521d136f38489d65102","isMergeCommit":false,"messageTitle":"update the history command with NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":14},"test-code":{"insertions":150,"deletions":82}}}]},{"date":"2024-10-07","commitResults":[{"hash":"2186a93b3c747c180755e7192757df4328e38503","isMergeCommit":false,"messageTitle":"Update the HistoryCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":3},"test-code":{"insertions":89,"deletions":38}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ea185d12d54d15f7605800411fd159e86af4c264","isMergeCommit":false,"messageTitle":"Add back the EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"e2dc73c35e62425edea88536a0ee8e2853e95ccc","isMergeCommit":false,"messageTitle":"Fix the stackPane problem","messageBody":"can switch between personList panel and callHistory panel\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":32}}},{"hash":"cd349cf61e1f2d956a84ffbf011f05cd4a3e9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d0c06aa0ab49822b89f9c79f2fb630c04b186b5","isMergeCommit":false,"messageTitle":"add new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d6fee1d6272a71bdc72bf3607e3ba6df99983886","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-history-call\u0027 of https://github.com/zyng233/tp into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab1c8d8dc2acf98b9f300a70ef9c4218c7df9550","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"869e03cc173a43a9ce7eae1f5572862166886fc5","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"88c3bee037449cd59da988071e0a3edb1ec8bd23","isMergeCommit":false,"messageTitle":"removing unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"6d8d993735c58aa40033f01dccbef9109d03a342","isMergeCommit":false,"messageTitle":"adding tests for new created methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":33},"test-code":{"insertions":37,"deletions":0}}},{"hash":"32153b86e0cf28a9fef6dbd18fd3dd7a47a3aa34","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"146c2e120c235e3ed3431bb0c48f6c23fccd4ccf","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7aa5aa3af086af23a60d76b44eb3c17639f21cf6","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cadb5a4fc90227a54a7df188cfdab0223c14833","isMergeCommit":false,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":2}}},{"hash":"80569e404a806b54120e25b0c13d39b8fde1ce6e","isMergeCommit":false,"messageTitle":"update more test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"test-code":{"insertions":3,"deletions":2}}}]}],"brendanng7":[{"date":"2024-09-24","commitResults":[{"hash":"672b9bdb66c8c1f60e9fcd89e80f4d50168700d5","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a42e261af49f6058965f62fa4a643a255e498c6f","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"c7f6cf241fb0136f131efd74033b0a73fa62ae19","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GabrielCWT/update-about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"1617de524329c4d2efbd7c4daf0bce6bd2ec11e4","isMergeCommit":false,"messageTitle":"Update site wide settings for team F14b-3","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"05d6200185af9794aeee54e5306d5e6e86fef961","isMergeCommit":true,"messageTitle":"Merge pull request #32 from GabrielCWT/update-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"e23c326af00b07d74f0d0b8020502256ec1c8494","isMergeCommit":true,"messageTitle":"Merge pull request #44 from GabrielCWT/fix-unhandled-empty-list","messageBody":"Implement handling of empty list when parsing JSON","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d3fcfb484dc8628d832f523f31c7011ade5a997d","isMergeCommit":false,"messageTitle":"Implement CallFrequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"efdb354d5b266966458b4a68451f8434c6e3259e","isMergeCommit":false,"messageTitle":"Add CallFrequency to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f1ea6070d40186bb9a139a09757a94ccff9d63f7","isMergeCommit":false,"messageTitle":"Add CallFrequency field to AddCommand and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":20}}},{"hash":"3e02fe1490dfece625914427690d2b9c0fedde7f","isMergeCommit":false,"messageTitle":"Update logic in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":30}}},{"hash":"fd48e50e3fb4278d745fcbe436d2b8c795c860e9","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"7da55b8a3ea46b2039151162ca7e588efbca0038","isMergeCommit":false,"messageTitle":"Update UI components and Json handler","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"76dc743d3ae909c89d8f0922209b2847efe461a3","isMergeCommit":false,"messageTitle":"Add more get methods to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":14,"deletions":8}}}]},{"date":"2024-10-05","commitResults":[{"hash":"2101475cc547b701d2dd892db6e39ba59f8598a8","isMergeCommit":false,"messageTitle":"Update equality for Person to not include call frequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d99e918d854fc99a7277a5e9ed4f586d0806f473","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":71}}},{"hash":"c912f03cbb56252acd073050365fd50c520aa8ae","isMergeCommit":false,"messageTitle":"Fix on EditCommand\u0027s parse sending error message incorrectly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fc0593e12e5d04c175533fa1aabc5baf88c3788","isMergeCommit":false,"messageTitle":"Update remaining test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":60}}},{"hash":"0a92bb4cc517d715e1d5d4c6608393f0ab0868ba","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"026badead32d0a75359d18037211a1ee0070c8ca","isMergeCommit":false,"messageTitle":"Fix code style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":11},"test-code":{"insertions":109,"deletions":14}}}]},{"date":"2024-10-09","commitResults":[{"hash":"5e91e31e15e489caeb92243450cedc15859d07b8","isMergeCommit":false,"messageTitle":"Update and add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":3}}},{"hash":"494666387dd19ec4451a6c554dac2b8e7ba4ad66","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"3497e5da6ed274c0cc01c4a312d250b7a03c636d","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GabrielCWT/implement-notes","messageBody":"Implement notes field for mark command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"linette-g":{"docs":52,"functional-code":164,"test-code":203},"Zenkoh1":{"docs":52,"functional-code":206,"test-code":254},"GabrielCWT":{"docs":201,"functional-code":407,"test-code":497},"zyng233":{"docs":4,"functional-code":362,"test-code":335},"brendanng7":{"docs":50,"functional-code":186,"test-code":220,"other":3}},"authorContributionVariance":{"linette-g":5242.4873,"Zenkoh1":33570.086,"GabrielCWT":19067.088,"zyng233":36519.96,"brendanng7":15875.628},"authorDisplayNameMap":{"linette-g":"CS2103T-F14b-3 LINE.. GOH","Zenkoh1":"CS2103T-F14b-3 ZEN .. KOH","GabrielCWT":"CS2103T-F14b-3 CHAN..RIEL","zyng233":"CS2103T-F14b-3 TAN ..YING","brendanng7":"CS2103T-F14b-3 BREN..GJIE"}} +{"authorDailyContributionsMap":{"linette-g":[{"date":"2024-09-24","commitResults":[{"hash":"1abc3a3937542d2bf79dbc715f3835c2fc9ea96f","isMergeCommit":false,"messageTitle":"Update AboutUs for Linette","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"d7ad478a9335e999c9d06e3db5def178163b1758","isMergeCommit":true,"messageTitle":"Merge pull request #24 from brendanng7/branch-add-aboutus","messageBody":"Update AboutUs for Brendan","fileTypesAndContributionMap":{}},{"hash":"24b222e39e0f7871d698b3529e78d00940f682f5","isMergeCommit":false,"messageTitle":"Update email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14479f4ad297a2c238dd67985f382d20f9215b92","isMergeCommit":false,"messageTitle":"Update email in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"989253feb82de7ab49d86a1391e29b5e61f1e467","isMergeCommit":false,"messageTitle":"Update link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-25","commitResults":[{"hash":"42f14fd98b42836fcb337a10e34ebc60fcc79061","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"cb2191565ee6907867ac23ab0b8fe062a90c5933","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf769100bf511a33f88a8d913ba49d0e7983a51e","isMergeCommit":false,"messageTitle":"Update mark and delete command to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":94,"deletions":21}}},{"hash":"b3cac6bc4e4f0b9a1942304e5e2eb0477e28be1c","isMergeCommit":false,"messageTitle":"Update JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":5}}},{"hash":"d804de205bc84df25b53ae251f2f5ceefd2b56f5","isMergeCommit":false,"messageTitle":"Update MarkCommand tests to include NRIC","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":3}}},{"hash":"f236e6c554f2e48874860b3edc55c71b7d270ce8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":10}}},{"hash":"836eededd065c9b5ca10a9f0fb939abb1e7f233d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-extend-nric","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f21ed093ae8c586b8a240640210996fff64c7d31","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dedd651d412e2d159c86525ae011096ec79cc88b","isMergeCommit":false,"messageTitle":"Update imports to single imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"506e491c7c1f8581f38dd72a461bd287e1b4e43f","isMergeCommit":false,"messageTitle":"Update delete command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2024-10-04","commitResults":[{"hash":"1b9d3a8c5019fe08d1c897585cbbad72ada76cc5","isMergeCommit":false,"messageTitle":"Update EditCommand to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16},"test-code":{"insertions":86,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"7dfcbd72e4d9c023381895d658f63c7e8e5b7a20","isMergeCommit":true,"messageTitle":"Merge pull request #49 from zyng233/add-history-call","messageBody":"Add history call command with NRIC and Index","fileTypesAndContributionMap":{}}]}],"Zenkoh1":[{"date":"2024-09-24","commitResults":[{"hash":"931d00dc64c2d592db8a58010912091e00941e52","isMergeCommit":false,"messageTitle":"Edit AboutUs for Zen","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"16f47042f0e1c951bcb73e1d035703e4e9f84ab0","isMergeCommit":true,"messageTitle":"Merge pull request #28 from linette-g/branch-aboutus","messageBody":"Update AboutUs for Linette","fileTypesAndContributionMap":{}},{"hash":"7fa2fd0fcba8ef4a63ff34b0de17efc1b0ed2945","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zyng233/add-AboutUs","messageBody":"Update AboutUs for Ziying","fileTypesAndContributionMap":{}},{"hash":"618ca3a99ef60286641fada6401b475729e6adcd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from brendanng7/branch-update-site-wide-settings","messageBody":"Update site wide settings for team F14b-3","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"d25242f82a29a9d9222ce6ab44911a5692f32f4f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from GabrielCWT/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"3dd6b394d92c800645c2d6bfcdfd49c18003438f","isMergeCommit":false,"messageTitle":"Add Nric field to person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":45},"test-code":{"insertions":282,"deletions":145}}},{"hash":"630524c0179ff9093d7c4c5960be13a678ad5c74","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":87,"deletions":15}}},{"hash":"f155b355016e7fe340951ef7bef67ec83bcb69d6","isMergeCommit":false,"messageTitle":"Revert some changes from SceneBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5}}},{"hash":"2801d44eb9e0654a282f22839314430bc6f05dde","isMergeCommit":false,"messageTitle":"Add somemore nric validation tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"3aff821cc0ba6f2c5b749cfd6616ef796505145f","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GabrielCWT/mark-as-contacted","messageBody":"Implement mark elderly as contacted","fileTypesAndContributionMap":{}},{"hash":"e19cb0715e8b1f4b1b88e076c4ecfc57f7dcf493","isMergeCommit":false,"messageTitle":"Improve code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"9461f0a484e36bb865e6724de02185d31f2a31fd","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Zenkoh1/improve-code-style-nric","messageBody":"Improve code style for nric implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"3bb9e35359a930cb37275da7fc979c4589eded2c","isMergeCommit":false,"messageTitle":"Improve Nric test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"e0126b9520f0af0005fbe00332cd674123025a8e","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Zenkoh1/improve-nric-test-cases","messageBody":"Improve Nric test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"3ef0ff7da87d821bd72396fa73c72f7a0e24187d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from brendanng7/branch-list-sort-priority","messageBody":"Add Call frequency field for branch list sorting in the future","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"ccd6700d5e147d4b66b29a3c0b16735921dfc253","isMergeCommit":false,"messageTitle":"Add similar persons functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":4},"test-code":{"insertions":217,"deletions":1}}},{"hash":"a601385982de3a9cd146d2af9d2cf0fb8ee2f7b5","isMergeCommit":false,"messageTitle":"Touch up on JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"180978b1a142d23a33c8eb02320e058d245df121","isMergeCommit":false,"messageTitle":"Add more to JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"f209de1cf78aedf617e6ee3adcfc0eb59ca69261","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"GabrielCWT":[{"date":"2024-09-24","commitResults":[{"hash":"e5c72956b75f1e4e2d17b330574b82d6cefcfb7c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"d043b43275c70bebc3823fcbfe09ccbadfaf709e","isMergeCommit":false,"messageTitle":"Add gabriel\u0027s portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":0}}},{"hash":"d2691ff8d48c90a5bca1d6325f576b349430b916","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Zenkoh1/edit-aboutus-zen","messageBody":"Update AboutUs for Zen","fileTypesAndContributionMap":{}},{"hash":"b3ab93d3bc6653571733ae13cf4b3198cd345ae2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"7ed84132cd834582ea30a86c49232d963a3deec6","isMergeCommit":false,"messageTitle":"Update value proposition and user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9213cf4a3bb74de0e94a199f05a0beb88704cd52","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":7}}}]},{"date":"2024-09-25","commitResults":[{"hash":"0b91794fbe7f116dc75673f48191afa8697f2369","isMergeCommit":false,"messageTitle":"Add use cases, NFR and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":105,"deletions":22}}},{"hash":"18a19cafd34e5660c6b316694946e85647a19091","isMergeCommit":false,"messageTitle":"Add missing use case ends for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"99a16c8be5b45e8b513da187d47b8f992732ed9f","isMergeCommit":false,"messageTitle":"Add missing underlines for inclusions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d7065e1b1ebbbf1016ae183c40da5d173fc2beb3","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"713558f351ce379151a3c4a4aeefcbe7f130a0b3","isMergeCommit":false,"messageTitle":"Implement ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":0}}},{"hash":"cfa7426da5e718622be30c53f77cb1e00530a762","isMergeCommit":false,"messageTitle":"Add ContactDateList to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":7}}},{"hash":"15c01bba71c79e0e06b6a4052b922342149a4f5a","isMergeCommit":false,"messageTitle":"Refactor files to accommodate for schema change","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":2}}},{"hash":"6e6a4466c6e8fc1217ed504d6bee1090e9340e01","isMergeCommit":false,"messageTitle":"Implement GUI for last contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d97916deaae9f64c65d8c439063efdb918f58410","isMergeCommit":false,"messageTitle":"Fix constructors for ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"53629d56cd478e05d336ab72a823a8ec66bce293","isMergeCommit":false,"messageTitle":"Implement JSON structure for contact dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"dfa0e5f1deddc9c8e2700ec539e6d12c164a9405","isMergeCommit":false,"messageTitle":"Remove contact date from toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a2c7b411aa91ca13a4ed0f60fcbede3d49d85a7b","isMergeCommit":false,"messageTitle":"Fix isValidContactDate validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d299e01a651a190a7eecf76b8570acdc2db91d72","isMergeCommit":false,"messageTitle":"Update tests to include contact dates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":9}}}]},{"date":"2024-10-01","commitResults":[{"hash":"8546f091ecdb592d66957eb65678af1ba9faa7de","isMergeCommit":false,"messageTitle":"Implement MarkCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":143,"deletions":0}}},{"hash":"3e63e4f7f70dae7abd9acaca0dea00dfab3684d5","isMergeCommit":false,"messageTitle":"Implement test for Person markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ef49d22c2f7dc71a903836c14274069b4b8ef947","isMergeCommit":false,"messageTitle":"Implement tests for ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"88a066008976a27503a6c358a55f083f74005d40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":2},"test-code":{"insertions":21,"deletions":17}}},{"hash":"ed7ad3bbdcc0d61ba6e52b39a9739f3ec627a2cf","isMergeCommit":false,"messageTitle":"Fix test for markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"01128b86d8aebf358de86384514607b5be19dd6b","isMergeCommit":false,"messageTitle":"Add missing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"87a22df0c41af4f97350864e90b44f2effbbef4c","isMergeCommit":false,"messageTitle":"Fix list not updated upon marking as contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":0,"deletions":1}}},{"hash":"c5ba2ed57cbf244feda03497f57423c645272070","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":42,"deletions":0}}},{"hash":"86083ce2a1806f2ac23ca0c7ba9918c29a380578","isMergeCommit":false,"messageTitle":"Implement error when accessing empty ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"4111a1fa6797769cb78ca0aaca79709b64a417f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Zenkoh1/add-person-nric","messageBody":"Add person NRIC field","fileTypesAndContributionMap":{}},{"hash":"aefb29376fb668b4668fe7b0409abb4476e7a6a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mark-as-contacted","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ad4a2f9c64b48f638fb52e1f4512fbd90215a0","isMergeCommit":false,"messageTitle":"Add mark as contact date with date provided","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"2873295415ccf6268ebc10507522903e7d4a789f","isMergeCommit":false,"messageTitle":"Implement handling of empty list when parsing JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"025fdcab7674cf3719b826ce9de2404d5a251c5b","isMergeCommit":false,"messageTitle":"Implement test for empty contact date list","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"26f3021d5398c351739e55eb58c7eedd72b8b62d","isMergeCommit":false,"messageTitle":"Add notes to the parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"b0be53d2230057d7b37224cc3bae9c8953093cef","isMergeCommit":false,"messageTitle":"Update functions to accept notes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":17}}},{"hash":"1fe91aed23672b9f4ea62ebb6fb461e88c1508e1","isMergeCommit":false,"messageTitle":"Add notes prefix as static variable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"00ff0b27914974cf1bcd19de9b533dd63e9e6259","isMergeCommit":false,"messageTitle":"Add notes to JSON helper for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}},{"hash":"4eece4474446ddd08d9fe8b9e584844190529da2","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"e8ee62804e3d649ab7599377688c7c34e0430152","isMergeCommit":false,"messageTitle":"Implement ContactDateBuilder for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"f88961cea0e8cbc3be846de77b9cd8cca6401f6d","isMergeCommit":false,"messageTitle":"Update tests and use ContactDateBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":34}}},{"hash":"b2a38dbc66841b6ab9b5998d796474ee4b123dc2","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"85624dab82c72ef63359ee1a200d9a3863694dbd","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"23df5d72e4812582e6f7eb515f498eae178aaf61","isMergeCommit":false,"messageTitle":"Implement more tests for ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"12655a80b9f7e2540be3c9ab28316680d0ddd794","isMergeCommit":false,"messageTitle":"Add null check for date in json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"499441a23b2a3b3bf20096d103220582420cef7a","isMergeCommit":false,"messageTitle":"Implement tests for json ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"ce02e55716afba5e75abfdef1b5ca1891fa3a375","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-notes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"515da4494cf5607463627a53646a76716668fb6e","isMergeCommit":false,"messageTitle":"Fix add function for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"702e6c49baed8258dea5239f5a530fffe8e1777f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Zenkoh1/soft-check-duplicates","messageBody":"Implement soft check for duplicate people","fileTypesAndContributionMap":{}}]}],"zyng233":[{"date":"2024-09-24","commitResults":[{"hash":"eb93f87e49f4790a91ac25a9da354a7f19542522","isMergeCommit":false,"messageTitle":"add ziying AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"194bfe9dbed7c2b6ec633c7ec96f0bccd237fce1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8afd1e674c1bd3f45fd5cdc25c53f69bee61aad1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfde96c7e9b8b5d266d4bbe59657b075738f422c","isMergeCommit":false,"messageTitle":"add johndoe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":51}}},{"hash":"4703457f800c621e5d468089ff510a436641b5d9","isMergeCommit":false,"messageTitle":"update the md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f94ac714e9a756d1c801f02918961fbbfe474b8a","isMergeCommit":false,"messageTitle":"update the all md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-25","commitResults":[{"hash":"b2a4d50fcc75483db11792e8806355277fa60786","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e43c6ae58c1fb8f7d53c834934a31e71aa9ca84b","isMergeCommit":true,"messageTitle":"fetch with the upstream","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"8ec66548d987e1502ceab0fadb2919b3ec5d2999","isMergeCommit":true,"messageTitle":"Merge pull request #46 from linette-g/branch-extend-nric","messageBody":"Extend commands to support NRIC","fileTypesAndContributionMap":{}},{"hash":"3b238e62cdd1805f159674ab2955def8ddc6d1f8","isMergeCommit":false,"messageTitle":"Add history command with index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":370,"deletions":9},"test-code":{"insertions":211,"deletions":2}}},{"hash":"c3d7672cd54aeae740f3f109c11f1f7b9582e025","isMergeCommit":true,"messageTitle":"fetch from the upstream to implement history command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"506ee942faaa3b0686e15521d136f38489d65102","isMergeCommit":false,"messageTitle":"update the history command with NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":14},"test-code":{"insertions":150,"deletions":82}}}]},{"date":"2024-10-07","commitResults":[{"hash":"2186a93b3c747c180755e7192757df4328e38503","isMergeCommit":false,"messageTitle":"Update the HistoryCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":3},"test-code":{"insertions":89,"deletions":38}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ea185d12d54d15f7605800411fd159e86af4c264","isMergeCommit":false,"messageTitle":"Add back the EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"e2dc73c35e62425edea88536a0ee8e2853e95ccc","isMergeCommit":false,"messageTitle":"Fix the stackPane problem","messageBody":"can switch between personList panel and callHistory panel\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":32}}},{"hash":"cd349cf61e1f2d956a84ffbf011f05cd4a3e9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d0c06aa0ab49822b89f9c79f2fb630c04b186b5","isMergeCommit":false,"messageTitle":"add new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d6fee1d6272a71bdc72bf3607e3ba6df99983886","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-history-call\u0027 of https://github.com/zyng233/tp into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab1c8d8dc2acf98b9f300a70ef9c4218c7df9550","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"869e03cc173a43a9ce7eae1f5572862166886fc5","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"88c3bee037449cd59da988071e0a3edb1ec8bd23","isMergeCommit":false,"messageTitle":"removing unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"6d8d993735c58aa40033f01dccbef9109d03a342","isMergeCommit":false,"messageTitle":"adding tests for new created methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":33},"test-code":{"insertions":37,"deletions":0}}},{"hash":"32153b86e0cf28a9fef6dbd18fd3dd7a47a3aa34","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"146c2e120c235e3ed3431bb0c48f6c23fccd4ccf","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7aa5aa3af086af23a60d76b44eb3c17639f21cf6","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cadb5a4fc90227a54a7df188cfdab0223c14833","isMergeCommit":false,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":2}}},{"hash":"80569e404a806b54120e25b0c13d39b8fde1ce6e","isMergeCommit":false,"messageTitle":"update more test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"test-code":{"insertions":3,"deletions":2}}}]}],"brendanng7":[{"date":"2024-09-24","commitResults":[{"hash":"672b9bdb66c8c1f60e9fcd89e80f4d50168700d5","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a42e261af49f6058965f62fa4a643a255e498c6f","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"c7f6cf241fb0136f131efd74033b0a73fa62ae19","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GabrielCWT/update-about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"1617de524329c4d2efbd7c4daf0bce6bd2ec11e4","isMergeCommit":false,"messageTitle":"Update site wide settings for team F14b-3","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"05d6200185af9794aeee54e5306d5e6e86fef961","isMergeCommit":true,"messageTitle":"Merge pull request #32 from GabrielCWT/update-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"e23c326af00b07d74f0d0b8020502256ec1c8494","isMergeCommit":true,"messageTitle":"Merge pull request #44 from GabrielCWT/fix-unhandled-empty-list","messageBody":"Implement handling of empty list when parsing JSON","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d3fcfb484dc8628d832f523f31c7011ade5a997d","isMergeCommit":false,"messageTitle":"Implement CallFrequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"efdb354d5b266966458b4a68451f8434c6e3259e","isMergeCommit":false,"messageTitle":"Add CallFrequency to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f1ea6070d40186bb9a139a09757a94ccff9d63f7","isMergeCommit":false,"messageTitle":"Add CallFrequency field to AddCommand and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":20}}},{"hash":"3e02fe1490dfece625914427690d2b9c0fedde7f","isMergeCommit":false,"messageTitle":"Update logic in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":30}}},{"hash":"fd48e50e3fb4278d745fcbe436d2b8c795c860e9","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"7da55b8a3ea46b2039151162ca7e588efbca0038","isMergeCommit":false,"messageTitle":"Update UI components and Json handler","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"76dc743d3ae909c89d8f0922209b2847efe461a3","isMergeCommit":false,"messageTitle":"Add more get methods to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":14,"deletions":8}}}]},{"date":"2024-10-05","commitResults":[{"hash":"2101475cc547b701d2dd892db6e39ba59f8598a8","isMergeCommit":false,"messageTitle":"Update equality for Person to not include call frequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d99e918d854fc99a7277a5e9ed4f586d0806f473","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":71}}},{"hash":"c912f03cbb56252acd073050365fd50c520aa8ae","isMergeCommit":false,"messageTitle":"Fix on EditCommand\u0027s parse sending error message incorrectly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fc0593e12e5d04c175533fa1aabc5baf88c3788","isMergeCommit":false,"messageTitle":"Update remaining test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":60}}},{"hash":"0a92bb4cc517d715e1d5d4c6608393f0ab0868ba","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"026badead32d0a75359d18037211a1ee0070c8ca","isMergeCommit":false,"messageTitle":"Fix code style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":11},"test-code":{"insertions":109,"deletions":14}}}]},{"date":"2024-10-09","commitResults":[{"hash":"5e91e31e15e489caeb92243450cedc15859d07b8","isMergeCommit":false,"messageTitle":"Update and add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":3}}},{"hash":"494666387dd19ec4451a6c554dac2b8e7ba4ad66","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"3497e5da6ed274c0cc01c4a312d250b7a03c636d","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GabrielCWT/implement-notes","messageBody":"Implement notes field for mark command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"linette-g":{"docs":52,"functional-code":164,"test-code":201},"Zenkoh1":{"docs":52,"functional-code":334,"test-code":468},"GabrielCWT":{"docs":201,"functional-code":407,"test-code":497},"zyng233":{"docs":4,"functional-code":362,"test-code":335},"brendanng7":{"docs":50,"functional-code":185,"test-code":220,"other":3}},"authorContributionVariance":{"linette-g":4642.9077,"Zenkoh1":33502.47,"GabrielCWT":17163.982,"zyng233":32253.55,"brendanng7":14031.015},"authorDisplayNameMap":{"linette-g":"CS2103T-F14b-3 LINE.. GOH","Zenkoh1":"CS2103T-F14b-3 ZEN .. KOH","GabrielCWT":"CS2103T-F14b-3 CHAN..RIEL","zyng233":"CS2103T-F14b-3 TAN ..YING","brendanng7":"CS2103T-F14b-3 BREN..GJIE"}} diff --git a/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json index 7daee88e..fb4f9483 100644 --- a/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-4/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp/graph/badge.svg?token\u003d33G8N0D437)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"# Financial Advisors Revolutionary Telemarketer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"This product is for Financial Advisors who engage frequently or specialise primarily in client outreach.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"Our product:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"* Allows advisors to keep track of who they have and have not contacted recently","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"* Sorts clients based on various categories and allow advisors to filter by these categories","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"* Automates the process of sending an automatic reminder to the advisor if a client has not been contacted in a while","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"* For the detailed documentation of this project, please see the **[F.A.R.T. Product Website](https://ay2425s1-cs2103t-f14b-4.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"## Credits","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"fymbc":16,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"AlphaPyke"},"content":"### Lim Qiao Yi","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"\u003cimg src\u003d\"images/meatyturtle.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":"[[github](https://github.com/meatyturtle)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":"[[linkedin](https://linkedin.com/limqiaoyi)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":"* Responsibility: Integration","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Shantaa"},"content":"### Shane Tay","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":"\u003cimg src\u003d\"images/shantaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Shantaa"},"content":"[[github](http://github.com/shantaa)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Shantaa"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"### Justin Aw","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"\u003cimg src\u003d\"images/justin-aw46.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"[[github](http://github.com/Justin-Aw46)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"### Joshua Ng","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"AlphaPyke"},"content":"\u003cimg src\u003d\"images/alphapyke.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"AlphaPyke"},"content":"[[github](http://github.com/AlphaPyke)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"AlphaPyke"},"content":"* Role: Code Quality","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"AlphaPyke"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards and git standards.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"### Tiew Wei Xuan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":"\u003cimg src\u003d\"images/fymbc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"[[github](http://github.com/fymbc)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":"* Responsibilities: Scheduling, Tracking, Deliverables, Deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"Justin-Aw46":4,"AlphaPyke":6,"-":31,"Shantaa":5,"fymbc":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Shantaa"},"content":"* Financial advisors who frequently or specialise primarily in client outreach","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Shantaa"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Shantaa"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"Shantaa"},"content":"* Keep track of who has and has not been contacted recently","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Shantaa"},"content":"* Sort clients based on various categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Shantaa"},"content":"* Filter for clients by above categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Shantaa"},"content":"* ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Shantaa"},"content":"|----------|----------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Shantaa"},"content":"| `*` | Forgetful Financial Advisor | Have a quick view of the contacts I need to contact | Keep track of them without using my own memory |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Note who I have contacted and have not contacted in a specific time period | Contact those who I have not reached out to recently |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Keep a template of catch-up messages to send to clients | Efficiently send messages to clients when necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Shantaa"},"content":"| `*` | Freshly registered Financial Advisor | Import contacts from my phone via CSV file | Have a starting list of contacts to work with |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Shantaa"},"content":"| `**` | Forgetful Financial Advisor | Have automated reminders when I have not contacted a client in a while | Be reminded to catch up with them |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Shantaa"},"content":"| `***` | Financial Advisor who just met someone new | Add contacts | Have the contact in my list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Shantaa"},"content":"| `***` | Retiring Financial Advisor | Delete contacts | Get rid of contacts that are no longer useful |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Shantaa"},"content":"| `*` | Organised Financial Advisor | Create folders to group contacts under predetermined/self-created groups | Sort my contacts accordingly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Shantaa"},"content":"| `**` | Meticulous Financial Advisor | Edit contact details | Update when their details as necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Shantaa"},"content":"| `***` | Meticulous Financial Advisor | Assign tags to my contacts | Easily sort my contacts by certain tags |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who woke up with someone in mind | Filter my contacts based on attributes | Find that one contact quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Add clients’ policies to their contact | Keep track of what policies the client is under |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Shantaa"},"content":"| `***` | Financially Struggling Financial Advisor | Keep track of which clients have made payments | Keep track of commissions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Shantaa"},"content":"| `**` | Boomer Financial Advisor | Run through a tutorial on how to use the app | Understand how the functions work |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | See sample data | See how a populated version of the app will look like |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Upload copies of clients’ PDF policies to their contact | Keep record of clients’ contracts for easy reference |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who is being chased by his boss | Add reminders on when clients\u0027 contracts need to be renewed | Ensure clients are always up to date on their contracts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | Delete sample/dummy data | Start using the app in a fresh state |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor with many clients | Add profile pictures to my clients | Recognize my clients when I meet them in person |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who does his job too well | Attach my clients\u0027 likes/dislikes | Connect with them on a more personal level |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Shantaa"},"content":"| `***` | Lost Financial Advisor | See a help page of all commands | Refer back to the page anytime I forget the instructions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Shantaa"},"content":"| `***` | Forgetful Financial Advisor | See all my contacts | View my entire contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Shantaa"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Shantaa"},"content":"1. User requests to add a new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Shantaa"},"content":"2. AddressBook adds new contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects an error in the provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects the existence of a duplicate contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook requests for confirmation to add new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Shantaa"},"content":" * 1a1a1. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Shantaa"},"content":" * 1a1a2. AddressBook adds the new contact and displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Shantaa"},"content":" * 1a1b1. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Shantaa"},"content":" * 1a1b2. AddressBook displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Shantaa"},"content":"**Use case: Find a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Shantaa"},"content":"1. User requests to find a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Shantaa"},"content":"2. AddressBook shows a list of related contacts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Shantaa"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Shantaa"},"content":"**Use case: Mark a contact as paid or unpaid**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Shantaa"},"content":"1. User requests to mark or unmark a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Shantaa"},"content":"2. AddressBook marks or unmarks contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Shantaa"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Shantaa"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Shantaa"},"content":"2. AddressBook requests confirmation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Shantaa"},"content":"3. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Shantaa"},"content":"4. AddressBook deletes the contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Shantaa"},"content":"* 2a. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Shantaa"},"content":" * AddressBook shows a confirmation meesage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"meatyturtle"},"content":"2. Should work without the usage of an external database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"meatyturtle"},"content":"3. Should work without any connection to a remote server or use of any cloud computing service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"meatyturtle"},"content":"4. 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","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"meatyturtle"},"content":"5. The system should be able to handle storage of over 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"meatyturtle"},"content":"6. The product is not required to have its own messaging service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"meatyturtle"},"content":"7. Queries to the system (find, list, paid etc.) should be responded to within 3 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"meatyturtle"},"content":"8. The product should not use any images / comments / jokes deemed offensive to Financial Advisors.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"meatyturtle"},"content":"9. The system should be usable by a novice with basic command-line knowledge.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"meatyturtle"},"content":"10. Any lists or iterables should be 1-indexed assuming the user does not have programming experience.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"meatyturtle"},"content":"11. The product is catered for use by a single user and interaction between users is not supported.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"meatyturtle"},"content":"12. Data collected should be stored locally, and be human editable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"meatyturtle"},"content":"13. The product should be packaged in a single `jar` file without the need for other installers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"meatyturtle"},"content":"14. The GUI should be optimised for standard screen resolutions 1920x1080 and higher, and screen scales 100% and 125%.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"meatyturtle"},"content":"15. The size of the product should not exceed 100mb.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"meatyturtle"},"content":"16. Visuals and text should be a large enough size for clarity.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"meatyturtle"},"content":"* **Financial Advisor**: A professional who provides expertise for clients\u0027 decisions around money matters, personal finances, and investments","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"meatyturtle"},"content":"* **Client**: A financial advisor\u0027s contact","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"meatyturtle"},"content":"* **GUI**: Graphical User Interface, a type of user interface through which users interact with electronic devices via visual indicator representations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"meatyturtle"},"content":"* **Payment frequency**: The frequency of which a Financial Advisor receives payments from their clients. Typically, every 3, 6, 9 or 12 months","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"meatyturtle"},"content":"* **Policy**: An agreement between the Financial Advisor and their client on the financial advisory services provided","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"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","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"meatyturtle":20,"-":368,"Shantaa":95}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"AlphaPyke"},"content":"Financial Assurance Revolutionary Telemarketer (FART) is a **desktop app for managing contacts just for you Financial Advisors, 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, FART can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"AlphaPyke"},"content":" 1. Should you require help, [here](https://www.oracle.com/java/technologies/downloads/#java17) is the download link to Java \u002717\u0027","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"AlphaPyke"},"content":" 2. After accessing the website, please choose the right download link for your operating system (Linux, macOS or Windows)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"AlphaPyke"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"AlphaPyke"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your FART.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"AlphaPyke"},"content":" 1. A good home folder would be the Downloads folder as it makes the next step easier.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"AlphaPyke"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fart_in_a.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"AlphaPyke"},"content":" 1. To open the command terminal, do open the terminal app for Linux/macOS users, and Windows Powershell for Windows users.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"AlphaPyke"},"content":" 2. For most users, in the terminal window please type `cd Downloads` to change the current folder to Downloads","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"AlphaPyke"},"content":"5. 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":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"AlphaPyke"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001` : Adds a contact named `John Doe` to the FART book and automatically marks them as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"AlphaPyke"},"content":" * `paid 3` : Marks the 3rd contact shown in the current list as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"AlphaPyke"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":70,"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"AlphaPyke"},"content":"Adds a person to the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"AlphaPyke"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS b/BIRTHDAY [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"AlphaPyke"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"AlphaPyke"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 b/11 09 2001 t/criminal`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"AlphaPyke"},"content":"Shows a list of all persons in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"AlphaPyke"},"content":"Edits an existing person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"AlphaPyke"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"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","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"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","isFullCredit":false},{"lineNumber":117,"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","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"AlphaPyke"},"content":"Deletes the specified person from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"AlphaPyke"},"content":"Clears all entries from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as paid: `paid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"AlphaPyke"},"content":"Format: `paid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `paid 2` marks the 2nd person in the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `paid 1` marks the 1st person in the results of the `find` command as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as unpaid: `unpaid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"AlphaPyke"},"content":"Format: `unpaid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `unpaid 2` marks the 2nd person in the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `unpaid 1` marks the 1st person in the results of the `find` command as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"AlphaPyke"},"content":"FART 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-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"AlphaPyke"},"content":"If your changes to the data file makes its format invalid, FART 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-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"AlphaPyke"},"content":"Furthermore, certain edits can cause the FART 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-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"AlphaPyke"},"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 FART home folder.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":219,"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"AlphaPyke"},"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 b/11 09 2001 t/friend t/colleague`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"AlphaPyke"},"content":"**Paid** | `paid INDEX`\u003cbr\u003e e.g., `paid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"AlphaPyke"},"content":"**Unpaid** | `unpaid INDEX`\u003cbr\u003e e.g., `unpaid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":60,"-":176}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"title: \"Financial Assurance Revolutionary Telemarketer\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"repository: \"AY2425S1-CS2103T-F14b-4/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"AlphaPyke"},"content":"title: Financial Assurance Revolutionary Telemarketer (FART)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"AlphaPyke"},"content":"**FART is a desktop application for managing your contact details, catered to financial advisors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested in using FART, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested about developing FART, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":4,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.confirmations.ConfirmDelete;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":" private boolean isConfirmed \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" // setter method for testing purposes","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"meatyturtle"},"content":" public void setConfirmed(boolean isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"meatyturtle"},"content":" this.isConfirmed \u003d isConfirmed;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"meatyturtle"},"content":" // display confirmation dialog - not sure if this is the best place to put it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"meatyturtle"},"content":" ConfirmDelete.showConfirmationDialog(personToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"meatyturtle"},"content":" throw new CommandException(\"You have cancelled the deletion!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"meatyturtle":16,"-":68}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_HASPAID + \"hasPaid]\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" Boolean updatedHasPaid \u003d editPersonDescriptor.getHasPaid().orElse(personToEdit.getHasPaid());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Shantaa"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Shantaa"},"content":" updatedAddress, updatedTags, updatedHasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Shantaa"},"content":" setHasPaid(toCopy.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Shantaa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Shantaa"},"content":" public void setHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Shantaa"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Shantaa"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(hasPaid, otherEditPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":238,"Shantaa":20}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * Finds and lists all persons in the address book whose name, phone, email, address, or tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" * contain any of the argument keywords. Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose name, phone, email, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" + \"address, or tags contain any of the specified keywords (case-insensitive) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" private final PersonContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" public FindCommand(PersonContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":51,"fymbc":8}},{"path":"src/main/java/seedu/address/logic/confirmations/ConfirmDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"meatyturtle"},"content":"package seedu.address.logic.confirmations;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"meatyturtle"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.ButtonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"meatyturtle"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"meatyturtle"},"content":" * Prompts the user to confirm the deletion of a person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"meatyturtle"},"content":"public class ConfirmDelete {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"meatyturtle"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d \"Are you sure you want to delete Person: %1$s ?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"meatyturtle"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":" * Displays a confirmation dialog to prompt the user to confirm the deletion.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":" * @param personToDelete The person the user wants to delete","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"meatyturtle"},"content":" * @return Whether the deletion proceeds or not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":" public static boolean showConfirmationDialog(Person personToDelete) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"meatyturtle"},"content":" Alert alert \u003d new Alert(Alert.AlertType.CONFIRMATION);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"meatyturtle"},"content":" alert.setTitle(\"Delete Confirmation\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"meatyturtle"},"content":" alert.setHeaderText(null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"meatyturtle"},"content":" alert.setContentText(String.format(MESSAGE_CONFIRM_DELETE, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"meatyturtle"},"content":" Optional\u003cButtonType\u003e result \u003d alert.showAndWait();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"meatyturtle"},"content":" return result.isPresent() \u0026\u0026 result.get() \u003d\u003d ButtonType.OK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"meatyturtle"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"meatyturtle":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_HASPAID)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Shantaa"},"content":" Boolean hasPaid \u003d Boolean.parseBoolean(argMultimap.getValue(PREFIX_HASPAID).get());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"Shantaa":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Shantaa"},"content":" public static final Prefix PREFIX_HASPAID \u003d new Prefix(\"paid/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":15,"Shantaa":1}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" return new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":31,"fymbc":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"meatyturtle"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"meatyturtle":1,"-":148}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" private final Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" Set\u003cTag\u003e tags, Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" requireAllNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" public Boolean getHasPaid() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" return hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 hasPaid \u003d\u003d otherPerson.hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" return Objects.hash(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":113,"Shantaa":13}},{"path":"src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":" * Tests that a {@code Person}\u0027s {@code Name}, {@code Phone}, {@code Email}, {@code Address},","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * or {@code Tags} match any of the keywords given.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":" public PersonContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getPhone().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getEmail().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":" || person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" .anyMatch(tag -\u003e StringUtil.containsWordIgnoreCase(tag.toString(), keyword))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" if (!(other instanceof PersonContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate otherPersonContainsKeywordsPredicate \u003d (PersonContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" return keywords.equals(otherPersonContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\", \"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"neighbours\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"family\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"classmates\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\"), false)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Shantaa":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" private final String hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"hasPaid\") String hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d source.getHasPaid().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Shantaa"},"content":" if (hasPaid \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"hasPaid\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Shantaa"},"content":" Boolean modelHasPaid \u003d hasPaid.equals(\"true\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelHasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Shantaa":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"Shantaa":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_TRUE \u003d \"true\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_FALSE \u003d \"false\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" public static final String HASPAID_AMY \u003d \" \" + PREFIX_HASPAID + VALID_HASPAID_TRUE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" public static final String HASPAID_BOB \u003d \" \" + PREFIX_HASPAID + VALID_HASPAID_FALSE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_TRUE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"fymbc"},"content":" model.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":124,"Shantaa":9,"fymbc":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":" * For testing purposes, mock ConfirmDelete to always return true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true); // bypasses the user confirmation","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"-":118}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", hasPaid\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getHasPaid().orElse(null) + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"Shantaa":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":" * Parses {@code userInput} into a {@code PersonContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" private PersonContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" return new PersonContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"-":80,"fymbc":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_BOB;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + HASPAID_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + HASPAID_BOB;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_HASPAID));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Shantaa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + HASPAID_AMY,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Shantaa"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + HASPAID_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":179,"Shantaa":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" assertEquals(new FindCommand(new PersonContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"-":99,"fymbc":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"-":32,"fymbc":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"fymbc"},"content":" modelManager.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"-":130,"fymbc":2}},{"path":"src/test/java/seedu/address/model/person/PersonContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicateTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstP \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondP \u003d new PersonContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" // sam","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" // e object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPCopy \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstPCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(secondP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" // One keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":" Collections.singletonList(\"Alice\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" // Multiple keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"fymbc"},"content":" // Only one matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"fymbc"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"fymbc"},"content":" //To be fixed in v1.3","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"fymbc"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"fymbc"},"content":" // public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"fymbc"},"content":" // // Zero keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"fymbc"},"content":" // PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"fymbc"},"content":" // // Non-matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"fymbc"},"content":" // // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"fymbc"},"content":" // asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" // .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"fymbc"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"fymbc"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"fymbc"},"content":" String expected \u003d PersonContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", hasPaid\u003d\" + ALICE.getHasPaid() + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":98,"Shantaa":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" private static final String VALID_HASPAID \u003d BENSON.getHasPaid().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" null, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, invalidTags, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Shantaa":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code HasPaid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptorBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"Shantaa":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Shantaa"},"content":" public static final Boolean DEFAULT_HASPAID \u003d false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d DEFAULT_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d personToCopy.getHasPaid();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code hasPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Shantaa"},"content":" public PersonBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" return new Person(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Shantaa":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" sb.append(PREFIX_HASPAID + person.getHasPaid().toString() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"Shantaa":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" .withTags(\"owesMoney\", \"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND).withHasPaid(true).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":66,"Shantaa":12}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-4/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp/graph/badge.svg?token\u003d33G8N0D437)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"# Financial Advisors Revolutionary Telemarketer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"This product is for Financial Advisors who engage frequently or specialise primarily in client outreach.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"Our product:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"* Allows advisors to keep track of who they have and have not contacted recently","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"* Sorts clients based on various categories and allow advisors to filter by these categories","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"* Automates the process of sending an automatic reminder to the advisor if a client has not been contacted in a while","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"* For the detailed documentation of this project, please see the **[F.A.R.T. Product Website](https://ay2425s1-cs2103t-f14b-4.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"## Credits","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"fymbc":16,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"AlphaPyke"},"content":"### Lim Qiao Yi","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"\u003cimg src\u003d\"images/meatyturtle.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":"[[github](https://github.com/meatyturtle)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":"[[linkedin](https://linkedin.com/limqiaoyi)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":"* Responsibility: Integration","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Shantaa"},"content":"### Shane Tay","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":"\u003cimg src\u003d\"images/shantaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Shantaa"},"content":"[[github](http://github.com/shantaa)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Shantaa"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"### Justin Aw","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"\u003cimg src\u003d\"images/justin-aw46.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"[[github](http://github.com/Justin-Aw46)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"### Joshua Ng","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"AlphaPyke"},"content":"\u003cimg src\u003d\"images/alphapyke.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"AlphaPyke"},"content":"[[github](http://github.com/AlphaPyke)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"AlphaPyke"},"content":"* Role: Code Quality","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"AlphaPyke"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards and git standards.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"### Tiew Wei Xuan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":"\u003cimg src\u003d\"images/fymbc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"[[github](http://github.com/fymbc)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":"* Responsibilities: Scheduling, Tracking, Deliverables, Deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"Justin-Aw46":4,"AlphaPyke":6,"-":31,"Shantaa":5,"fymbc":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Shantaa"},"content":"* Financial advisors who frequently or specialise primarily in client outreach","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Shantaa"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Shantaa"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"Shantaa"},"content":"* Keep track of who has and has not been contacted recently","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Shantaa"},"content":"* Sort clients based on various categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Shantaa"},"content":"* Filter for clients by above categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Shantaa"},"content":"* ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Shantaa"},"content":"|----------|----------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Shantaa"},"content":"| `*` | Forgetful Financial Advisor | Have a quick view of the contacts I need to contact | Keep track of them without using my own memory |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Note who I have contacted and have not contacted in a specific time period | Contact those who I have not reached out to recently |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Keep a template of catch-up messages to send to clients | Efficiently send messages to clients when necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Shantaa"},"content":"| `*` | Freshly registered Financial Advisor | Import contacts from my phone via CSV file | Have a starting list of contacts to work with |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Shantaa"},"content":"| `**` | Forgetful Financial Advisor | Have automated reminders when I have not contacted a client in a while | Be reminded to catch up with them |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Shantaa"},"content":"| `***` | Financial Advisor who just met someone new | Add contacts | Have the contact in my list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Shantaa"},"content":"| `***` | Retiring Financial Advisor | Delete contacts | Get rid of contacts that are no longer useful |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Shantaa"},"content":"| `*` | Organised Financial Advisor | Create folders to group contacts under predetermined/self-created groups | Sort my contacts accordingly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Shantaa"},"content":"| `**` | Meticulous Financial Advisor | Edit contact details | Update when their details as necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Shantaa"},"content":"| `***` | Meticulous Financial Advisor | Assign tags to my contacts | Easily sort my contacts by certain tags |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who woke up with someone in mind | Filter my contacts based on attributes | Find that one contact quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Add clients’ policies to their contact | Keep track of what policies the client is under |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Shantaa"},"content":"| `***` | Financially Struggling Financial Advisor | Keep track of which clients have made payments | Keep track of commissions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Shantaa"},"content":"| `**` | Boomer Financial Advisor | Run through a tutorial on how to use the app | Understand how the functions work |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | See sample data | See how a populated version of the app will look like |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Upload copies of clients’ PDF policies to their contact | Keep record of clients’ contracts for easy reference |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who is being chased by his boss | Add reminders on when clients\u0027 contracts need to be renewed | Ensure clients are always up to date on their contracts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | Delete sample/dummy data | Start using the app in a fresh state |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor with many clients | Add profile pictures to my clients | Recognize my clients when I meet them in person |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who does his job too well | Attach my clients\u0027 likes/dislikes | Connect with them on a more personal level |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Shantaa"},"content":"| `***` | Lost Financial Advisor | See a help page of all commands | Refer back to the page anytime I forget the instructions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Shantaa"},"content":"| `***` | Forgetful Financial Advisor | See all my contacts | View my entire contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"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","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Shantaa"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Shantaa"},"content":"1. User requests to add a new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Shantaa"},"content":"2. AddressBook adds new contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects an error in the provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects the existence of a duplicate contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook requests for confirmation to add new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Shantaa"},"content":" * 1a1a1. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Shantaa"},"content":" * 1a1a2. AddressBook adds the new contact and displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Shantaa"},"content":" * 1a1b1. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Shantaa"},"content":" * 1a1b2. AddressBook displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Shantaa"},"content":"**Use case: Find a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Shantaa"},"content":"1. User requests to find a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Shantaa"},"content":"2. AddressBook shows a list of related contacts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Shantaa"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Shantaa"},"content":"**Use case: Mark a contact as paid or unpaid**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Shantaa"},"content":"1. User requests to mark or unmark a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Shantaa"},"content":"2. AddressBook marks or unmarks contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Shantaa"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Shantaa"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Shantaa"},"content":"2. AddressBook requests confirmation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Shantaa"},"content":"3. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Shantaa"},"content":"4. AddressBook deletes the contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Shantaa"},"content":"* 2a. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Shantaa"},"content":" * AddressBook shows a confirmation meesage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"meatyturtle"},"content":"2. Should work without the usage of an external database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"meatyturtle"},"content":"3. Should work without any connection to a remote server or use of any cloud computing service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"meatyturtle"},"content":"4. 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","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"meatyturtle"},"content":"5. The system should be able to handle storage of over 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"meatyturtle"},"content":"6. The product is not required to have its own messaging service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"meatyturtle"},"content":"7. Queries to the system (find, list, paid etc.) should be responded to within 3 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"meatyturtle"},"content":"8. The product should not use any images / comments / jokes deemed offensive to Financial Advisors.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"meatyturtle"},"content":"9. The system should be usable by a novice with basic command-line knowledge.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"meatyturtle"},"content":"10. Any lists or iterables should be 1-indexed assuming the user does not have programming experience.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"meatyturtle"},"content":"11. The product is catered for use by a single user and interaction between users is not supported.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"meatyturtle"},"content":"12. Data collected should be stored locally, and be human editable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"meatyturtle"},"content":"13. The product should be packaged in a single `jar` file without the need for other installers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"meatyturtle"},"content":"14. The GUI should be optimised for standard screen resolutions 1920x1080 and higher, and screen scales 100% and 125%.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"meatyturtle"},"content":"15. The size of the product should not exceed 100mb.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"meatyturtle"},"content":"16. Visuals and text should be a large enough size for clarity.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"meatyturtle"},"content":"* **Financial Advisor**: A professional who provides expertise for clients\u0027 decisions around money matters, personal finances, and investments","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"meatyturtle"},"content":"* **Client**: A financial advisor\u0027s contact","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"meatyturtle"},"content":"* **GUI**: Graphical User Interface, a type of user interface through which users interact with electronic devices via visual indicator representations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"meatyturtle"},"content":"* **Payment frequency**: The frequency of which a Financial Advisor receives payments from their clients. Typically, every 3, 6, 9 or 12 months","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"meatyturtle"},"content":"* **Policy**: An agreement between the Financial Advisor and their client on the financial advisory services provided","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"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","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"meatyturtle":20,"-":368,"Shantaa":95}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"AlphaPyke"},"content":"Financial Assurance Revolutionary Telemarketer (FART) is a **desktop app for managing contacts just for you Financial Advisors, 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, FART can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"AlphaPyke"},"content":" 1. Should you require help, [here](https://www.oracle.com/java/technologies/downloads/#java17) is the download link to Java \u002717\u0027","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"AlphaPyke"},"content":" 2. After accessing the website, please choose the right download link for your operating system (Linux, macOS or Windows)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"AlphaPyke"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"AlphaPyke"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your FART.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"AlphaPyke"},"content":" 1. A good home folder would be the Downloads folder as it makes the next step easier.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"AlphaPyke"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fart_in_a.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"AlphaPyke"},"content":" 1. To open the command terminal, do open the terminal app for Linux/macOS users, and Windows Powershell for Windows users.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"AlphaPyke"},"content":" 2. For most users, in the terminal window please type `cd Downloads` to change the current folder to Downloads","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"AlphaPyke"},"content":"5. 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":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"AlphaPyke"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001` : Adds a contact named `John Doe` to the FART book and automatically marks them as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"AlphaPyke"},"content":" * `paid 3` : Marks the 3rd contact shown in the current list as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"AlphaPyke"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":70,"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"AlphaPyke"},"content":"Adds a person to the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"AlphaPyke"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS b/BIRTHDAY [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"AlphaPyke"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"AlphaPyke"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 b/11 09 2001 t/criminal`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"AlphaPyke"},"content":"Shows a list of all persons in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"AlphaPyke"},"content":"Edits an existing person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"AlphaPyke"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"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","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"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","isFullCredit":false},{"lineNumber":117,"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","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"AlphaPyke"},"content":"Deletes the specified person from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"AlphaPyke"},"content":"Clears all entries from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as paid: `paid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"AlphaPyke"},"content":"Format: `paid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `paid 2` marks the 2nd person in the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `paid 1` marks the 1st person in the results of the `find` command as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as unpaid: `unpaid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"AlphaPyke"},"content":"Format: `unpaid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `unpaid 2` marks the 2nd person in the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `unpaid 1` marks the 1st person in the results of the `find` command as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"AlphaPyke"},"content":"FART 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-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"AlphaPyke"},"content":"If your changes to the data file makes its format invalid, FART 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-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"AlphaPyke"},"content":"Furthermore, certain edits can cause the FART 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-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"AlphaPyke"},"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 FART home folder.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":219,"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"AlphaPyke"},"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 b/11 09 2001 t/friend t/colleague`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"AlphaPyke"},"content":"**Paid** | `paid INDEX`\u003cbr\u003e e.g., `paid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"AlphaPyke"},"content":"**Unpaid** | `unpaid INDEX`\u003cbr\u003e e.g., `unpaid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":60,"-":176}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"title: \"Financial Assurance Revolutionary Telemarketer\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"repository: \"AY2425S1-CS2103T-F14b-4/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"AlphaPyke"},"content":"title: Financial Assurance Revolutionary Telemarketer (FART)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"AlphaPyke"},"content":"**FART is a desktop application for managing your contact details, catered to financial advisors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested in using FART, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested about developing FART, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":4,"-":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.confirmations.ConfirmDelete;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":" private boolean isConfirmed \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" // setter method for testing purposes","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"meatyturtle"},"content":" public void setConfirmed(boolean isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"meatyturtle"},"content":" this.isConfirmed \u003d isConfirmed;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"meatyturtle"},"content":" // display confirmation dialog - not sure if this is the best place to put it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"meatyturtle"},"content":" ConfirmDelete.showConfirmationDialog(personToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"meatyturtle"},"content":" throw new CommandException(\"You have cancelled the deletion!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"meatyturtle":16,"-":68}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" Boolean updatedHasPaid \u003d personToEdit.getHasPaid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedHasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d toCopy.hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Shantaa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Shantaa"},"content":" public void setHasPaid(Boolean hasPaid) { // needed for EditPersonDescriptorTest.java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Shantaa"},"content":" public Optional\u003cBoolean\u003e getHasPaid() { // needed for EditPersonDescriptorTest.java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Shantaa"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(hasPaid, otherEditPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":236,"Shantaa":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * Finds and lists all persons in the address book whose name, phone, email, address, or tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" * contain any of the argument keywords. Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose name, phone, email, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" + \"address, or tags contain any of the specified keywords (case-insensitive) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" private final PersonContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" public FindCommand(PersonContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":51,"fymbc":8}},{"path":"src/main/java/seedu/address/logic/commands/PaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" * Marks the person identified by the index number to have made payment.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public static final String COMMAND_WORD \u003d \"paid\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" + \": Marks the person identified by the index number to have made payment.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_PAID_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" private final Index index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" private final PaidPersonDescriptor paidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" * @param index of the person in the filtered person list to mark as paid","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":" * @param paidPersonDescriptor person that has been marked as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":" public PaidCommand(Index index, PaidPersonDescriptor paidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" this.paidPersonDescriptor \u003d new PaidCommand.PaidPersonDescriptor(paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":" Person personToPay \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person paidPerson \u003d createPaidPerson(personToPay, paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" model.setPerson(personToPay, paidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":" return new CommandResult(String.format(MESSAGE_PAID_PERSON_SUCCESS, Messages.format(paidPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" * Creates and returns a {@code Person} with the details of {@code personToPay}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":" * edited with {@code paidPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" private static Person createPaidPerson(Person personToPay, PaidPersonDescriptor paidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" assert personToPay !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":" Boolean updatedHasPaid \u003d true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" return new Person(personToPay.getName(), personToPay.getPhone(), personToPay.getEmail(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":" personToPay.getAddress(), personToPay.getTags(), updatedHasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand otherPaidCommand \u003d (PaidCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" return index.equals(otherPaidCommand.index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" * Stores the details for person to mark as paid. Same as the nested class in EditCommand but this","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" * only changes the hasPaid variable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":" public static class PaidPersonDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":" public PaidPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" public PaidPersonDescriptor(PaidPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":" toCopy.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" public void setHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" this.hasPaid \u003d true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand.PaidPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor otherPaidPersonDescriptor \u003d (PaidCommand.PaidPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Justin-Aw46"},"content":" return Objects.equals(hasPaid, otherPaidPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":149}},{"path":"src/main/java/seedu/address/logic/commands/UnpaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" * Marks the person identified by the index number to have made payment.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public static final String COMMAND_WORD \u003d \"unpaid\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" + \": Marks the person identified by the index number to have not made payment.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_UNPAID_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" private final Index index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" private final UnpaidPersonDescriptor unpaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" * @param index of the person in the filtered person list to mark as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":" * @param unpaidPersonDescriptor person that has been marked as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidCommand(Index index, UnpaidPersonDescriptor unpaidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" this.unpaidPersonDescriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor(unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":" Person originalPerson \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person unpaidPerson \u003d createUnpaidPerson(originalPerson, unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" model.setPerson(originalPerson, unpaidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":" return new CommandResult(String.format(MESSAGE_UNPAID_PERSON_SUCCESS, Messages.format(unpaidPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" * Creates and returns a {@code Person} with the details of {@code personToPay}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":" * edited with {@code paidPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" private static Person createUnpaidPerson(Person personToPay, UnpaidPersonDescriptor unpaidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" assert personToPay !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":" Boolean updatedHasNotPaid \u003d false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" return new Person(personToPay.getName(), personToPay.getPhone(), personToPay.getEmail(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":" personToPay.getAddress(), personToPay.getTags(), updatedHasNotPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof UnpaidCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand otherCommand \u003d (UnpaidCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" return index.equals(otherCommand.index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" * Stores the details for person to mark as paid. Same as the nested class in EditCommand but this","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" * only changes the hasPaid variable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" public static class UnpaidPersonDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidPersonDescriptor(UnpaidPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" toCopy.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":" public void setHasNotPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" this.hasPaid \u003d false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand.PaidPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor otherUnpaidPersonDescriptor \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Justin-Aw46"},"content":" (UnpaidCommand.UnpaidPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Justin-Aw46"},"content":" return Objects.equals(hasPaid, otherUnpaidPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"hasNotPaid\", hasPaid)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":147}},{"path":"src/main/java/seedu/address/logic/confirmations/ConfirmDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"meatyturtle"},"content":"package seedu.address.logic.confirmations;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"meatyturtle"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.ButtonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"meatyturtle"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"meatyturtle"},"content":" * Prompts the user to confirm the deletion of a person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"meatyturtle"},"content":"public class ConfirmDelete {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"meatyturtle"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d \"Are you sure you want to delete Person: %1$s ?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"meatyturtle"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":" * Displays a confirmation dialog to prompt the user to confirm the deletion.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":" * @param personToDelete The person the user wants to delete","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"meatyturtle"},"content":" * @return Whether the deletion proceeds or not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":" public static boolean showConfirmationDialog(Person personToDelete) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"meatyturtle"},"content":" Alert alert \u003d new Alert(Alert.AlertType.CONFIRMATION);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"meatyturtle"},"content":" alert.setTitle(\"Delete Confirmation\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"meatyturtle"},"content":" alert.setHeaderText(null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"meatyturtle"},"content":" alert.setContentText(String.format(MESSAGE_CONFIRM_DELETE, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"meatyturtle"},"content":" Optional\u003cButtonType\u003e result \u003d alert.showAndWait();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"meatyturtle"},"content":" return result.isPresent() \u0026\u0026 result.get() \u003d\u003d ButtonType.OK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"meatyturtle"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"meatyturtle":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Shantaa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Shantaa"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"Shantaa":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" case PaidCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return new PaidCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" case UnpaidCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" return new UnpaidCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":8,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" return new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":31,"fymbc":2}},{"path":"src/main/java/seedu/address/logic/parser/PaidCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand.PaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":" * Parses input arguments and creates a new PaidCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandParser implements Parser\u003cPaidCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" * Parses the given {@code String} of arguments in the context of the PaidCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" * and returns a PaidCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" public PaidCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" PaidPersonDescriptor paidPersonDescriptor \u003d new PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" paidPersonDescriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" return new PaidCommand(index, paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PaidCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":32}},{"path":"src/main/java/seedu/address/logic/parser/UnpaidCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand.UnpaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":" * Parses input arguments and creates a new UnpaidCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandParser implements Parser\u003cUnpaidCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" * Parses the given {@code String} of arguments in the context of the UnpaidCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" * and returns a UnpaidCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" try {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidPersonDescriptor unpaidPersonDescriptor \u003d new UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" unpaidPersonDescriptor.setHasNotPaid(); // Change this to false for Unpaid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" return new UnpaidCommand(index, unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpaidCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":32}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"meatyturtle"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"meatyturtle":1,"-":148}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" private final Boolean hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Boolean hasPaid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" requireAllNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" public Boolean getHasPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" return hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 hasPaid.equals(otherPerson.hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" return Objects.hash(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":113,"Shantaa":13}},{"path":"src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":" * Tests that a {@code Person}\u0027s {@code Name}, {@code Phone}, {@code Email}, {@code Address},","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * or {@code Tags} match any of the keywords given.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":" public PersonContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getPhone().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getEmail().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":" || person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" .anyMatch(tag -\u003e StringUtil.containsWordIgnoreCase(tag.toString(), keyword))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" if (!(other instanceof PersonContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate otherPersonContainsKeywordsPredicate \u003d (PersonContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" return keywords.equals(otherPersonContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\", \"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"neighbours\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"family\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"classmates\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\"), false)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Shantaa":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" private final String hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"hasPaid\") String hasPaid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d source.getHasPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Shantaa"},"content":" if (hasPaid \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"hasPaid\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Shantaa"},"content":" Boolean modelHasPaid \u003d hasPaid.equals(\"true\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelHasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Shantaa":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_FALSE \u003d \"false\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":117,"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","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"fymbc"},"content":" model.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":123,"fymbc":2,"Shantaa":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":" * For testing purposes, mock ConfirmDelete to always return true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true); // bypasses the user confirmation","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"-":118}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", hasPaid\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getHasPaid().orElse(null) + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"Shantaa":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":" * Parses {@code userInput} into a {@code PersonContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" private PersonContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" return new PersonContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"-":80,"fymbc":11}},{"path":"src/test/java/seedu/address/logic/commands/PaidCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkPaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(PaidCommand.MESSAGE_PAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkPaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkPaid.getName(), personToMarkPaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getEmail(), personToMarkPaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getTags(), true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkPaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(paidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(paidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkPaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(PaidCommand.MESSAGE_PAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkPaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" Person paidPerson \u003d new Person(personToMarkPaid.getName(), personToMarkPaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getEmail(), personToMarkPaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getTags(), true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkPaid, paidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(paidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(paidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public void equals() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidFirstCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidSecondCommand \u003d new PaidCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(paidFirstCommand.equals(paidFirstCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidFirstCommandCopy \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(paidFirstCommand.equals(paidFirstCommandCopy));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(paidSecondCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" String expected \u003d PaidCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" assertEquals(expected, paidCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":132}},{"path":"src/test/java/seedu/address/logic/commands/UnpaidCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkUnpaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(UnpaidCommand.MESSAGE_UNPAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkUnpaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkUnpaid.getName(), personToMarkUnpaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getEmail(), personToMarkUnpaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getTags(), false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkUnpaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(unpaidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(unpaidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkUnpaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(UnpaidCommand.MESSAGE_UNPAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkUnpaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkUnpaid.getName(), personToMarkUnpaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getEmail(), personToMarkUnpaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getTags(), false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkUnpaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(unpaidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(unpaidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public void equals() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidFirstCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidSecondCommand \u003d new UnpaidCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(unpaidFirstCommand.equals(unpaidFirstCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidFirstCommandCopy \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(unpaidFirstCommand.equals(unpaidFirstCommandCopy));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(unpaidSecondCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" String expected \u003d UnpaidCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" assertEquals(expected, unpaidCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":131}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Shantaa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Shantaa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":187,"Shantaa":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Shantaa"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Shantaa"},"content":" // public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Shantaa"},"content":" // Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Shantaa"},"content":" // EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" // EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" // + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" // assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Shantaa"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" assertEquals(new FindCommand(new PersonContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":" public void parseCommand_paid() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"paid 1\") instanceof PaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"paid 2\") instanceof PaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" public void parseCommand_unpaid() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"unpaid 1\") instanceof UnpaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"unpaid 2\") instanceof UnpaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":14,"-":88,"Shantaa":11,"fymbc":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"-":32,"fymbc":2}},{"path":"src/test/java/seedu/address/logic/parser/PaidCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":" private PaidCommandParser parser \u003d new PaidCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_validArgs_returnsPaidCommand() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor paidPersonDescriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" paidPersonDescriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" assertParseSuccess(parser, \"1\", new PaidCommand(INDEX_FIRST_PERSON, paidPersonDescriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, PaidCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":28}},{"path":"src/test/java/seedu/address/logic/parser/UnpaidCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":" private UnpaidCommandParser parser \u003d new UnpaidCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_validArgs_returnsPaidCommand() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor unpaidPersonDescriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" unpaidPersonDescriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" assertParseSuccess(parser, \"1\", new UnpaidCommand(INDEX_FIRST_PERSON, unpaidPersonDescriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpaidCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":28}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"fymbc"},"content":" modelManager.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"-":130,"fymbc":2}},{"path":"src/test/java/seedu/address/model/person/PersonContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicateTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstP \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondP \u003d new PersonContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" // sam","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" // e object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPCopy \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstPCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(secondP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" // One keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":" Collections.singletonList(\"Alice\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" // Multiple keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"fymbc"},"content":" // Only one matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"fymbc"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"fymbc"},"content":" //To be fixed in v1.3","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"fymbc"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"fymbc"},"content":" // public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"fymbc"},"content":" // // Zero keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"fymbc"},"content":" // PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"fymbc"},"content":" // // Non-matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"fymbc"},"content":" // // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"fymbc"},"content":" // asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" // .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"fymbc"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"fymbc"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"fymbc"},"content":" String expected \u003d PersonContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", hasPaid\u003d\" + ALICE.getHasPaid() + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":98,"Shantaa":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" private static final String VALID_HASPAID \u003d BENSON.getHasPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" null, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, invalidTags, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Shantaa":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(person.getHasPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" // check here","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code HasPaid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptorBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"Shantaa":10}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Shantaa"},"content":" public static final Boolean DEFAULT_HASPAID \u003d false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d DEFAULT_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d personToCopy.getHasPaid();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code hasPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Shantaa"},"content":" public PersonBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" return new Person(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Shantaa":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" //Paid field not appended as add command does not include a paid prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" //acceptable as this method is only used in the testing of add command","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" //Paid field not appended as edit command does not allow changing of paid status","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" //acceptable as this method is only used in the testing of edit command","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"Shantaa":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" .withTags(\"owesMoney\", \"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND).withHasPaid(false).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHasPaid(false).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":64,"Shantaa":14}}] diff --git a/AY2425S1-CS2103T-F14b-4_tp_master/commits.json b/AY2425S1-CS2103T-F14b-4_tp_master/commits.json index 8877c100..74d268f3 100644 --- a/AY2425S1-CS2103T-F14b-4_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Justin-Aw46":[{"date":"2024-10-01","commitResults":[{"hash":"db24abe7213561df616ece87737058fcee0af9b7","isMergeCommit":false,"messageTitle":"Add Justin info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"0e6be4680feba69f0c02601dac527002bb1d482b","isMergeCommit":false,"messageTitle":"Edit role","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b00418c3c54b04e02df2f075ca714718f591f223","isMergeCommit":false,"messageTitle":"Change position of profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-10-03","commitResults":[{"hash":"f7bf71bf36ff2735cfd88f3772e995f2c06f5d04","isMergeCommit":false,"messageTitle":"Change title and repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"b013d0fc9ca7177cd73b3b9dcedd9c44b9016da2","isMergeCommit":false,"messageTitle":"Edit repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]}],"meatyturtle":[{"date":"2024-10-01","commitResults":[{"hash":"335f777ca4df3ba983991b5554720df824d27018","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"dfa07eccb3dcfc074d994cf1fa119928bed36c8d","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"b06a61691c42b86a5623a83e254bfe8f947dd6d1","isMergeCommit":false,"messageTitle":"Update DG (NFRs and Glossary)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":5}}},{"hash":"81a71f40ba99ce73e778aaae5349b76a589b0d11","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AlphaPyke/cleanup1","messageBody":"Tidy up AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"0248c5f3aa31293607d1777448b306d39424a98d","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Justin-Aw46/update-site-wide-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}},{"hash":"921a6d205b7c1c8b68f63e9733b1b55a5509d015","isMergeCommit":true,"messageTitle":"Merge pull request #27 from meatyturtle/dev-guide","messageBody":"Update DG (NFRs and Glossary)","fileTypesAndContributionMap":{}},{"hash":"d6a17c55b8113670afbd2e4a430828f3768a5af5","isMergeCommit":true,"messageTitle":"Merge pull request #29 from fymbc/update-readme","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"bafd2f5678f0e46ca27c954185a020212d1a5e0f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Shantaa/update-dg-v1.1","messageBody":"Update DG (Use cases and user stories)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"7e9f51589c41c376039846528edb482314592c14","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Shantaa/update-person-class-v2","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"328bda547d9e0b4ba375acadd57859f5de56b800","isMergeCommit":true,"messageTitle":"Merge pull request #43 from AlphaPyke/cleanup2","messageBody":"Refine index.md and AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"204eabc34a75c6be630e063077c95db2202257ac","isMergeCommit":false,"messageTitle":"Add Delete Confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":1},"test-code":{"insertions":5,"deletions":2}}}]}],"AlphaPyke":[{"date":"2024-10-01","commitResults":[{"hash":"50d70b8616489c5ac4e8a811bd7e8ab8a49c0818","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9d77635e7caecd51f7dfcbd38ccd9e7c72080393","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"5e7465fc3da90b570258a5f4c41f26dbe84cc026","isMergeCommit":false,"messageTitle":"Tidy up AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-05","commitResults":[{"hash":"5c14ea7839f4fc40213424f3de40b02e823cc289","isMergeCommit":false,"messageTitle":"Refine index.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e905e9caa4899bb1cfe0730546f28ded8763aea7","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]}],"fymbc":[{"date":"2024-10-01","commitResults":[{"hash":"5d90165ab44faab14d8bb88b748be36da9b77f4e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AlphaPyke/Image","messageBody":"Add Joshua\u0027s image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"d08a7da6366907c9ae9837cd5bef2a14d0a6c057","isMergeCommit":false,"messageTitle":"Add Wei Xuan\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"51a7b6f58b2b3de3c245aa594178c184cacd8655","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Justin-Aw46/add-justin-info","messageBody":"Add Justin info","fileTypesAndContributionMap":{}},{"hash":"a41bab8a92c152318581b080bfa31e994bd3f0b4","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AlphaPyke/aboutus","messageBody":"Add Joshua\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0dc1174b7d07cef1bb60dcce539e72a1e340f9a7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Shantaa/add-shane-info","messageBody":"Add Shane\u0027s info","fileTypesAndContributionMap":{}},{"hash":"7519907714ae8a61294df2f65f0e3ef06c24ceba","isMergeCommit":true,"messageTitle":"Merge pull request #19 from meatyturtle/add-info","messageBody":"Add Qiao Yi\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0795881bc0003df9c67bd8be292cf7381173f479","isMergeCommit":true,"messageTitle":"Merge pull request #20 from fymbc/add-wx-info","messageBody":"Add Wei Xuan\u0027s info","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"aea0733bca1afd5c7425062c641edb635fdffb08","isMergeCommit":false,"messageTitle":"Update README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"efaca63371bd00abd01dbcfd820bc45acd43d54b","isMergeCommit":false,"messageTitle":"Update README to fix Java CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d3d627bf6f161b798fdc487e813e0db8040dcef6","isMergeCommit":false,"messageTitle":"Evolve Find command partially","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":53},"test-code":{"insertions":109,"deletions":104}}},{"hash":"edc33c8da470b0d494c31288a8707de8d4ab5767","isMergeCommit":true,"messageTitle":"Merge pull request #48 from meatyturtle/confirm-delete","messageBody":"Add Delete Confirmation","fileTypesAndContributionMap":{}},{"hash":"d09661e23fe3d1674c84af216282b6b1d4833e52","isMergeCommit":true,"messageTitle":"Merge pull request #51 from fymbc/find-command","messageBody":"Evolve Find command partially","fileTypesAndContributionMap":{}},{"hash":"ca316eb09d8dc9d7364fe944fb367966b8b03c44","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AlphaPyke/userguide1","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]}],"Shantaa":[{"date":"2024-10-01","commitResults":[{"hash":"7eb1da1c9d9f5f5bc3d1207435720cf99ba0af78","isMergeCommit":false,"messageTitle":"add shane\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-04","commitResults":[{"hash":"ce2fc1b7640e77e6686092efb3664b3d67d871f3","isMergeCommit":false,"messageTitle":"update dg first two points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":104,"deletions":19}}}]},{"date":"2024-10-05","commitResults":[{"hash":"dbf56176c889a90a8002b8e994c92f4cf0042925","isMergeCommit":false,"messageTitle":"update person class version 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":20},"test-code":{"insertions":98,"deletions":42}}},{"hash":"930daec89da6d7ce95d256aed17b744cfda2a17d","isMergeCommit":false,"messageTitle":"fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"a9f0c08c5bc2fce7848034e715a65d5356577711","isMergeCommit":false,"messageTitle":"fix more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"799b3d143f62a30f0c32d5c4d77653e7de8138e2","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"7788864c182df22fa9288fb32da86524b6523416","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"2ea2ac7895ab43e0dae87957b9990f89d4df2518","isMergeCommit":false,"messageTitle":"update paid variable to hasPaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37},"test-code":{"insertions":65,"deletions":65}}},{"hash":"ab8bd12a710e67f65c71c23674a73f6fa376d099","isMergeCommit":false,"messageTitle":"fix checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"72eda19b6aba921678313f5c0c3c5c2374b6726d","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"439b50dc49f3327514bd472f5695c400650e4f4b","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again and yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Justin-Aw46":{"docs":4,"functional-code":0,"test-code":0,"other":2},"meatyturtle":{"docs":25,"functional-code":47,"test-code":5},"AlphaPyke":{"docs":70,"functional-code":0,"test-code":0},"fymbc":{"docs":21,"functional-code":62,"test-code":109},"Shantaa":{"docs":100,"functional-code":60,"test-code":98}},"authorContributionVariance":{"Justin-Aw46":50.122444,"meatyturtle":165.10657,"AlphaPyke":315.48303,"fymbc":4859.2017,"Shantaa":5343.1333},"authorDisplayNameMap":{"Justin-Aw46":"CS2103T-F14b-4 AW J..STIN","meatyturtle":"CS2103T-F14b-4 LIM ..O YI","AlphaPyke":"CS2103T-F14b-4 JOSH..MING","fymbc":"CS2103T-F14b-4 TIEW..XUAN","Shantaa":"CS2103T-F14b-4 SHAN.. TAY"}} +{"authorDailyContributionsMap":{"Justin-Aw46":[{"date":"2024-10-01","commitResults":[{"hash":"db24abe7213561df616ece87737058fcee0af9b7","isMergeCommit":false,"messageTitle":"Add Justin info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"0e6be4680feba69f0c02601dac527002bb1d482b","isMergeCommit":false,"messageTitle":"Edit role","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b00418c3c54b04e02df2f075ca714718f591f223","isMergeCommit":false,"messageTitle":"Change position of profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-10-03","commitResults":[{"hash":"f7bf71bf36ff2735cfd88f3772e995f2c06f5d04","isMergeCommit":false,"messageTitle":"Change title and repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"b013d0fc9ca7177cd73b3b9dcedd9c44b9016da2","isMergeCommit":false,"messageTitle":"Edit repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b2360b36df1f929e79d7badf9b4d3801fac379dd","isMergeCommit":false,"messageTitle":"Add PaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"5d83cce79084de2979c03758f227e109e6bcc889","isMergeCommit":false,"messageTitle":"Add PaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"aff2252e39d67a5c042bbf9ede5b8c3adab25c43","isMergeCommit":false,"messageTitle":"Add paid command to addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"1cca2f57a330375bee0caa4ca1de1298e293313b","isMergeCommit":false,"messageTitle":"Tidy up lines in editcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"c5cf13f02b60c8c46b5b730d011a63e7c2b9cb09","isMergeCommit":false,"messageTitle":"Add Paid case to addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d73722b24fec3fbfd987677f45f1105960db31b7","isMergeCommit":false,"messageTitle":"Edit the input arguments for PaidCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5938fce4fcb252e6025ada0115b8d249b9e149fc","isMergeCommit":false,"messageTitle":"Create functionality for PaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"adce82d1d29f3739f3d13a18c54a2789f9172aa5","isMergeCommit":false,"messageTitle":"Create functionality for PaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":1}}},{"hash":"0437eed89c9b407b53f49e62e2510a81d92332b2","isMergeCommit":false,"messageTitle":"Add unpaid prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"782673ac5340317b8f35096ae80b060d8c0ae17d","isMergeCommit":false,"messageTitle":"Add Unpaid command case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"af7081f702293d75b65e26c61d2c4099d3f7abfc","isMergeCommit":false,"messageTitle":"Create UnpaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":0}}},{"hash":"a4e8b8254a90d2fc6904942975ea4e4fd7164d6d","isMergeCommit":false,"messageTitle":"Create UnpaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"45f68cc75387b630f312e2b471bb3c1c5e888917","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"644ed47f65b7550c387cb1776b86694ac3057542","isMergeCommit":false,"messageTitle":"Remove unpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":128}}},{"hash":"a58544da5db4a95c7377c5f14a7eee8f2fa0f805","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"5beb5ba193c1229693be65973bc9938eae3e377a","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"db2cb10cfb551e515bc3ed2da2169eb38f9fbda1","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d463cc7dc13a8ac81bc033f6cade4d185e246d84","isMergeCommit":false,"messageTitle":"Add unpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"15b1a16f1a9ef72dccc0f6d61bcb6d62dea0009c","isMergeCommit":false,"messageTitle":"Override equals and toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"ff3032c5fe540d7b4e47760767721333b8ef480a","isMergeCommit":false,"messageTitle":"Finalise command files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":0},"test-code":{"insertions":258,"deletions":0}}},{"hash":"e542dac004e2b1a11dbe31d63786682862ec8a91","isMergeCommit":false,"messageTitle":"Add space for style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"d82d99172761a8193c60ca26a4b6a7b4d7d60180","isMergeCommit":false,"messageTitle":"Fix for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":18}}},{"hash":"01f9efbe576212923f229fc329a80664b97ff568","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"07483d0fd574c95c2d146c31361bec59dccffec5","isMergeCommit":false,"messageTitle":"Remove duplicated person check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":11}}},{"hash":"3f38bd34d6b476b85e82cf797b60216b039ce946","isMergeCommit":false,"messageTitle":"Remove unpaid prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fdb08d9312ce2fc7256e8e80d434bc9f5306f96b","isMergeCommit":false,"messageTitle":"Update paid command with nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":30}}},{"hash":"b4d894783cba8b346e164df2eb3567546c8439ec","isMergeCommit":false,"messageTitle":"Update setpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"9e9cecf01f08762f76edcb4cf3ce93dddfb3ef03","isMergeCommit":false,"messageTitle":"Add nested class UnpaidPersonDescriptor to UnpaidCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":38}}},{"hash":"2760ad2465d59204a3a7a1fc8f06b1d297c5949c","isMergeCommit":false,"messageTitle":"Update paid and unpaid parser to handle new nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"9728e43ea5be0d079e494fa7da7cc853c5c45bab","isMergeCommit":false,"messageTitle":"Update tests in paid and unpaid command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":26}}},{"hash":"7df8c99012b71a3f0b102e95a92c129865a663d8","isMergeCommit":false,"messageTitle":"Add javadocs for each of the nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"871535b6ba96cac9e65d6e14f49a439b51a8768a","isMergeCommit":false,"messageTitle":"Add testcase for paid and unpaid","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"d99bea4ed9bfb89a29db78704a02361b27355af3","isMergeCommit":false,"messageTitle":"Add PaidCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"86d7040f8bba29d6e269ae633dfd94fced6de981","isMergeCommit":false,"messageTitle":"Add UnpaidCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}}]}],"meatyturtle":[{"date":"2024-10-01","commitResults":[{"hash":"335f777ca4df3ba983991b5554720df824d27018","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"dfa07eccb3dcfc074d994cf1fa119928bed36c8d","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"b06a61691c42b86a5623a83e254bfe8f947dd6d1","isMergeCommit":false,"messageTitle":"Update DG (NFRs and Glossary)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":5}}},{"hash":"81a71f40ba99ce73e778aaae5349b76a589b0d11","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AlphaPyke/cleanup1","messageBody":"Tidy up AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"0248c5f3aa31293607d1777448b306d39424a98d","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Justin-Aw46/update-site-wide-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}},{"hash":"921a6d205b7c1c8b68f63e9733b1b55a5509d015","isMergeCommit":true,"messageTitle":"Merge pull request #27 from meatyturtle/dev-guide","messageBody":"Update DG (NFRs and Glossary)","fileTypesAndContributionMap":{}},{"hash":"d6a17c55b8113670afbd2e4a430828f3768a5af5","isMergeCommit":true,"messageTitle":"Merge pull request #29 from fymbc/update-readme","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"bafd2f5678f0e46ca27c954185a020212d1a5e0f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Shantaa/update-dg-v1.1","messageBody":"Update DG (Use cases and user stories)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"7e9f51589c41c376039846528edb482314592c14","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Shantaa/update-person-class-v2","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"328bda547d9e0b4ba375acadd57859f5de56b800","isMergeCommit":true,"messageTitle":"Merge pull request #43 from AlphaPyke/cleanup2","messageBody":"Refine index.md and AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"204eabc34a75c6be630e063077c95db2202257ac","isMergeCommit":false,"messageTitle":"Add Delete Confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":1},"test-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"a9a72107cdd877e37ab60604b930b62c13e7ff5f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Shantaa/remove-paid-prefix","messageBody":"Remove paid prefix","fileTypesAndContributionMap":{}},{"hash":"f74e5bcd68d9859df17de63b49869299d462d637","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-paid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c786970c1b911b4e04c41bbe7df83531c9de3d18","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Justin-Aw46/add-paid","messageBody":"Add paid/unpaid command","fileTypesAndContributionMap":{}}]}],"AlphaPyke":[{"date":"2024-10-01","commitResults":[{"hash":"50d70b8616489c5ac4e8a811bd7e8ab8a49c0818","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9d77635e7caecd51f7dfcbd38ccd9e7c72080393","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"5e7465fc3da90b570258a5f4c41f26dbe84cc026","isMergeCommit":false,"messageTitle":"Tidy up AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-05","commitResults":[{"hash":"5c14ea7839f4fc40213424f3de40b02e823cc289","isMergeCommit":false,"messageTitle":"Refine index.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e905e9caa4899bb1cfe0730546f28ded8763aea7","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]},{"date":"2024-10-12","commitResults":[{"hash":"0778637d822b0997628ccc1fad42c473a816db43","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]}],"fymbc":[{"date":"2024-10-01","commitResults":[{"hash":"5d90165ab44faab14d8bb88b748be36da9b77f4e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AlphaPyke/Image","messageBody":"Add Joshua\u0027s image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"d08a7da6366907c9ae9837cd5bef2a14d0a6c057","isMergeCommit":false,"messageTitle":"Add Wei Xuan\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"51a7b6f58b2b3de3c245aa594178c184cacd8655","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Justin-Aw46/add-justin-info","messageBody":"Add Justin info","fileTypesAndContributionMap":{}},{"hash":"a41bab8a92c152318581b080bfa31e994bd3f0b4","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AlphaPyke/aboutus","messageBody":"Add Joshua\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0dc1174b7d07cef1bb60dcce539e72a1e340f9a7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Shantaa/add-shane-info","messageBody":"Add Shane\u0027s info","fileTypesAndContributionMap":{}},{"hash":"7519907714ae8a61294df2f65f0e3ef06c24ceba","isMergeCommit":true,"messageTitle":"Merge pull request #19 from meatyturtle/add-info","messageBody":"Add Qiao Yi\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0795881bc0003df9c67bd8be292cf7381173f479","isMergeCommit":true,"messageTitle":"Merge pull request #20 from fymbc/add-wx-info","messageBody":"Add Wei Xuan\u0027s info","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"aea0733bca1afd5c7425062c641edb635fdffb08","isMergeCommit":false,"messageTitle":"Update README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"efaca63371bd00abd01dbcfd820bc45acd43d54b","isMergeCommit":false,"messageTitle":"Update README to fix Java CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d3d627bf6f161b798fdc487e813e0db8040dcef6","isMergeCommit":false,"messageTitle":"Evolve Find command partially","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":53},"test-code":{"insertions":109,"deletions":104}}},{"hash":"edc33c8da470b0d494c31288a8707de8d4ab5767","isMergeCommit":true,"messageTitle":"Merge pull request #48 from meatyturtle/confirm-delete","messageBody":"Add Delete Confirmation","fileTypesAndContributionMap":{}},{"hash":"d09661e23fe3d1674c84af216282b6b1d4833e52","isMergeCommit":true,"messageTitle":"Merge pull request #51 from fymbc/find-command","messageBody":"Evolve Find command partially","fileTypesAndContributionMap":{}},{"hash":"ca316eb09d8dc9d7364fe944fb367966b8b03c44","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AlphaPyke/userguide1","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]}],"Shantaa":[{"date":"2024-10-01","commitResults":[{"hash":"7eb1da1c9d9f5f5bc3d1207435720cf99ba0af78","isMergeCommit":false,"messageTitle":"add shane\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-04","commitResults":[{"hash":"ce2fc1b7640e77e6686092efb3664b3d67d871f3","isMergeCommit":false,"messageTitle":"update dg first two points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":104,"deletions":19}}}]},{"date":"2024-10-05","commitResults":[{"hash":"dbf56176c889a90a8002b8e994c92f4cf0042925","isMergeCommit":false,"messageTitle":"update person class version 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":20},"test-code":{"insertions":98,"deletions":42}}},{"hash":"930daec89da6d7ce95d256aed17b744cfda2a17d","isMergeCommit":false,"messageTitle":"fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"a9f0c08c5bc2fce7848034e715a65d5356577711","isMergeCommit":false,"messageTitle":"fix more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"799b3d143f62a30f0c32d5c4d77653e7de8138e2","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"7788864c182df22fa9288fb32da86524b6523416","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"2ea2ac7895ab43e0dae87957b9990f89d4df2518","isMergeCommit":false,"messageTitle":"update paid variable to hasPaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37},"test-code":{"insertions":65,"deletions":65}}},{"hash":"ab8bd12a710e67f65c71c23674a73f6fa376d099","isMergeCommit":false,"messageTitle":"fix checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"72eda19b6aba921678313f5c0c3c5c2374b6726d","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"439b50dc49f3327514bd472f5695c400650e4f4b","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again and yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b428c80f89411aecf7cf4e3c25f41c5e6ee4110","isMergeCommit":false,"messageTitle":"WIP: save current changes before merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":15},"test-code":{"insertions":27,"deletions":12}}},{"hash":"2d859f474c432455d704e6bc6a905b0c620ed715","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into remove-paid-prefix","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e325e3fa32699573e2478be1f102ea55380f7a11","isMergeCommit":false,"messageTitle":"fix my greatest enemy checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":22}}},{"hash":"75803bfff44d6acc5b3954b7e8e56c44e598d800","isMergeCommit":false,"messageTitle":"defeat my greatest enemy checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Justin-Aw46":{"docs":4,"functional-code":368,"test-code":333,"other":2},"meatyturtle":{"docs":25,"functional-code":47,"test-code":5},"AlphaPyke":{"docs":70,"functional-code":0,"test-code":0},"fymbc":{"docs":21,"functional-code":62,"test-code":109},"Shantaa":{"docs":100,"functional-code":57,"test-code":99}},"authorContributionVariance":{"Justin-Aw46":35573.555,"meatyturtle":152.37428,"AlphaPyke":540.2987,"fymbc":4460.911,"Shantaa":5597.4443},"authorDisplayNameMap":{"Justin-Aw46":"CS2103T-F14b-4 AW J..STIN","meatyturtle":"CS2103T-F14b-4 LIM ..O YI","AlphaPyke":"CS2103T-F14b-4 JOSH..MING","fymbc":"CS2103T-F14b-4 TIEW..XUAN","Shantaa":"CS2103T-F14b-4 SHAN.. TAY"}} diff --git a/AY2425S1-CS2103T-T11-2_tp_master/authorship.json b/AY2425S1-CS2103T-T11-2_tp_master/authorship.json index 728fbe43..c9d5cf22 100644 --- a/AY2425S1-CS2103T-T11-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T11-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"By CS2103T-T11-2","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"* This is **a project for CS2030S TAs**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * as a reference to get their students\u0027 details more easily","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" * as a tool to help them keep track of their students.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"* The project simulates an ongoing software project for a desktop application (called _konTActs_) used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"* It is named `konTActs` because it is developed for CS2030S TAs to manage their students, store their github details and other contacts like professors and fellow TAs. ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2425s1-cs2103t-t11-2.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"You can reach us at the email `e1249111[at]u.nus.edu`","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tohjh"},"content":"### Toh Jia Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tohjh"},"content":"\u003cimg src\u003d\"images/tohjh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tohjh"},"content":"[[github](http://github.com/tohjh)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tohjh"},"content":"[[portfolio](team/tohjh.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tohjh"},"content":"* Role: Developer","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tohjh"},"content":"* Responsibilities: Deliverables and deadline","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"### Wen Rui","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"\u003cimg src\u003d\"images/currynia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"[[github](http://github.com/currynia)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"[[portfolio](team/currynia.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":"### Lau Xiang Yu","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":"\u003cimg src\u003d\"images/dessnowy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":"[[github](http://github.com/DesSnowy)] ","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":"[[portfolio](team/dessnowy.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"### Swaminathan Viswa","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":"\u003cimg src\u003d\"images/swaminathanviswa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"[[github](http://github.com/SwaminathanViswa)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":"[[portfolio](team/swaminathanviswa.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"* Responsibilities: Responsible for quality of project documentations","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" ### Javier Tan Meng Wee","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"\u003cimg src\u003d\"images/incogdino.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":"[[github](http://github.com/incogdino)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":"[[portfolio](team/incogdino.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":6,"DesSnowy":7,"currynia":5,"Incogdino":5,"-":37,"tohjh":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"# KonTActs Developer Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"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","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"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","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"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","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"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","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"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","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"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","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"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","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"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","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"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","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":222,"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","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"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","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"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","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"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","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"currynia"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"currynia"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"currynia"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"currynia"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"currynia"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"currynia"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"currynia"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"currynia"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"currynia"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"currynia"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"currynia"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"currynia"},"content":"- has a need to manage a significant number of contacts","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":"- can type fast","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"SwaminathanViswa"},"content":"| Priority | As a/an …​ | I want to …​ | So that …​ |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DesSnowy"},"content":"|-------|------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s github username | I can easily reference them when grading assignments. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | user | add the student\u0027s contact number | I can easily reference them when I need to contact my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add the contact details of other TAs | I can quickly reach out for help or collaboration. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add contact details of professors | I can easily reach them for guidance or to pass on important information. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | delete contacts easily | I dont clutter the list with unwanted contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store the grades and progress of my students | I can keep track of which of my students need more guidance and follow up. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s telegram username | I can easily reference them and contact them when needed to. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | see the student\u0027s MC or reasoning when they do not turn up for lessons | I can create make up lessons / check up on them. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | have a function to hide the details of students that I do not need | I can only the the information that I want to see. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | view the last modification date of student contact details | I can confirm the accuracy and recency of the information stored. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | create contacts with optional fields | I can resepct the privacy of my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for a student’s GitHub username | I can quickly access their repository for grading and feedback. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | potential user | see the application populated with sample data | I can see how the app looks like when it is in use. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | put the contacts into different tabs | I can easily navigate between different types of contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line interface to search for contacts | I can integrate the tool smoothly into my existing workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for the contact details of professors/ other TAs | I can quickly contact them for help if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | find my students house in time | I can offer them help in times of crisis. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | organise the contact of my students | I can view the details of each student with greater ease. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | import student contact information from a file | I can easily transfer data between devices. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | export student contact information to a file | I can backup or share contact details with other TAs or professors if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | flag specific students for follow-up | I can easily identify students who may need additional support or guidance. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | choose to sort my students | I can group students based on their proficiency. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter the contact details that is shown | I can easily find the information of a particular group. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter contacts based on a certain criteria | I can access a specific subset of students that I want. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | tag students with custom labels | I can categorize students based on their progress or needs. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line to access my students work | have their work and contact and tags all tied together in one smooth workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | experienced user | create shortcuts for commands that I use frequently | I can access the frequently used information quickly. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | new user | use a help function to check what this app offers | I can easily have the details of the commands to use in my fingertips. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | create automatic flags to indicate if a student\u0027s work is marked | I can monitor grading deadlines so that I can stay on top of my responsibilities without missing any critical dates. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"currynia"},"content":"(For all use cases below, the **System** is the `KonTActs` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"currynia"},"content":"**Use case: UC01 - Add contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"currynia"},"content":"1. User chooses to add a contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"currynia"},"content":"3. User enters the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"currynia"},"content":"4. KonTActs adds the new contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the input format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"currynia"},"content":" - 3a1.KonTActs requests for the corrected input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"currynia"},"content":" - 3b2. User enters a new input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until input format is correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"currynia"},"content":" Use cases resume from step 4.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"currynia"},"content":"**Use case: UC02 - Delete contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"currynia"},"content":"1. The task that the user wants to delete exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"currynia"},"content":"1. User indicates to delete a task.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"currynia"},"content":"2. KonTActs deletes the tasks and indicates success.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"currynia"},"content":"- 1a. KonTActs detects an error in the input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"currynia"},"content":" - 1a1.KonTActs requests for the user to try again.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"currynia"},"content":" - 1a2. User enters the command again","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input entered is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"currynia"},"content":"**Use case: UC03 - Add grades of students**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to add grades exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"currynia"},"content":"2. The assignment that the user wants to add a grade to exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"currynia"},"content":"1. User chooses to add grades for a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the assignment and grade.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"currynia"},"content":"4. KonTActs updates the grade of the student.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"currynia"},"content":"- 4a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"currynia"},"content":" - 4a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"currynia"},"content":" - 4a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"currynia"},"content":" - Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"currynia"},"content":"**Use case: UC04 - View Contact**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"currynia"},"content":"1. Current UI is not showing the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"currynia"},"content":"2. User chooses to view the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"currynia"},"content":"3. KonTActs displays the full list of contacts.\\","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"currynia"},"content":"- 1a. User has previously filtered the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays the full contact list, removing the previous filters.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"currynia"},"content":"- 1b. KonTActs detects an error (e.g., unable to retrieve contacts).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"currynia"},"content":" - 1b1. KonTActs displays an error message.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"currynia"},"content":"**Use case: UC05 - Update contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"currynia"},"content":"1. TA chooses to update a contact’s details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the contact’s identifier.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"currynia"},"content":"3. TA enters the identifier of the contact to update.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"currynia"},"content":"4. KonTActs displays the current details and requests the changes.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"currynia"},"content":"5. TA updates the relevant details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"currynia"},"content":"6. KonTActs saves and displays the changes.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs identifies that there is no such contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"currynia"},"content":" - 3a2. TA enters the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"currynia"},"content":"**Use case: UC06 - Filter Contact List**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"currynia"},"content":"1. User chooses to filter the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the filter criteria (current overall grades, name, tele handle).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"currynia"},"content":"3. User enters the filter criteria.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"currynia"},"content":"4. KonTActs filters the contact list based on the entered criteria and displays the filtered list.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered filter criteria (e.g., incorrect input - invalid score input).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct filter criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"currynia"},"content":" - 3a2. Users enter new criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the criteria entered are valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the filter action.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"currynia"},"content":"- \\*a1. KonTActs stops the filter operation and returns to the unfiltered contact list by using list","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"currynia"},"content":"**Use case: UC07 - Create shortcut for commands**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"currynia"},"content":"1. User indicates to create a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"currynia"},"content":"2. KonTActs request for the command that is frequently used.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"currynia"},"content":"3. User enters the command to be shortened.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"currynia"},"content":"4. KonTActs request for the shortcut input to replace the command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"currynia"},"content":"5. User enters the shortcut input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"currynia"},"content":"6. KonTActs stores the shortcut and indicates success.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects that the command entered is not valid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"currynia"},"content":" - 3a2. User enters a new command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until the command entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"currynia"},"content":"- 5a. KonTActs detects that the shortcut is already in use.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"currynia"},"content":" - 5a1. KonTActs request for a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"currynia"},"content":" - 5a2. User enters a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"currynia"},"content":" - Steps 5a1 - 5a2 are repeated until the shortcut entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"currynia"},"content":" Use case resumes from step 6.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the creation of a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the creation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"currynia"},"content":"**Use case: UC08 - Sort students based on proficiency**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"currynia"},"content":"1. The address book contains a list of students/ contacts.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"currynia"},"content":"2. Contacts should have a proficiency rating associated to them.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"currynia"},"content":"1. User chooses to sort the students based on their proficiency.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"currynia"},"content":"2. User enters the sort command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"currynia"},"content":"3. KonTActs returns the list of students in the sorted order.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"currynia"},"content":"**Use case: UC09 - Export contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"currynia"},"content":"1. User chooses to export the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"currynia"},"content":"3. User selects the desired format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"currynia"},"content":"4. KonTActs exports the contact list to the specified format and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"currynia"},"content":"- 2a. User selects an unsupported format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"currynia"},"content":" - 2a1. KonTActs displays an error message and provides the list of formats that are supported.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"currynia"},"content":"**Use case: UC10 - Request for help**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"currynia"},"content":"1. User inputs help command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"currynia"},"content":"2. KonTActs shows a help page.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"currynia"},"content":"- 1a. User inputs help for a specific command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays a help page for that command.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"currynia"},"content":"**Use case: UC11 - Tag students with custom labels**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to tag exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"currynia"},"content":"1. User chooses to tag a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the tag to label the student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"currynia"},"content":"4. KonTActs tags the student with the suggested label.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"currynia"},"content":" - 3a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"currynia"},"content":"**Use case: UC12 - View last modification date of contact details**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"currynia"},"content":"1. User requests for last modification date of contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"currynia"},"content":"2. KonTActs shows the last modification date for that contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"currynia"},"content":"- 1a. User inputs a non-existing contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs requests for corrected contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"currynia"},"content":" - 1a2. User inputs new contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input contact is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"currynia"},"content":"**Use case: UC13 - Import contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"currynia"},"content":"1. User chooses to import the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"currynia"},"content":"3. User selects the desired file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"currynia"},"content":"4. KonTActs import the contact list from the specified file and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an unsupported or corrupted file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs indicates it is unable to import from that file and requests for a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"currynia"},"content":" - 3a2. User selects a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until KonTActs is able to import contacts from the file.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the import.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"currynia"},"content":"**Use case: UC14 - Create automatic flags for students’ work if marked**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"currynia"},"content":"Actor: TA","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"currynia"},"content":"1. TA marks a student’s work.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"currynia"},"content":"2. KonTActs creates a flag to show the student’s work as marked.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Incogdino"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":666,"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","isFullCredit":false},{"lineNumber":667,"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","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Incogdino"},"content":"4. Commands should be easy to remember.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Incogdino"},"content":"5. Ui should be easy to navigate and intuitive.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Incogdino"},"content":"6. KonTActs should be easy to use for new users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Incogdino"},"content":"7. The system should work on both 32 bit and 64 bit environments.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Incogdino"},"content":"8. Contact details are securely stored.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Incogdino"},"content":"9. The application should have an uptime of at least 99.9% to ensure constant availability for users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Incogdino"},"content":"10. The application should automatically save data after every change to avoid data loss in case of a crash.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Incogdino"},"content":"11. There should be proper documentation for the code and application usage to assist developers in future updates.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Incogdino"},"content":"12. Error messages should be descriptive, providing users with clear guidance on how to resolve the issue.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Incogdino"},"content":"13. Searching for or filtering contacts should take less than 5 seconds.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Incogdino"},"content":"14. Stored contacts are persisted between sessions.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"DesSnowy"},"content":"* **Contact**: An individual (e.g. student) stored in the system, typically having details regarding them such as their name, github username and etc.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"DesSnowy"},"content":"* **Easy to use for new users**: intuitive commands that are easy to understand and UI that is easy to navigate.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"DesSnowy"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"DesSnowy"},"content":"* **Average typing speed**: about 40 words per minute.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"DesSnowy"},"content":"* **Uptime**: The system should be operational during that period of time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"DesSnowy"},"content":"* **Between sessions**: Every opening and closing of the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"DesSnowy"},"content":"* **Proper documentation**: A detailed user and developer guide which helps future users and developers to understand and use the code.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"DesSnowy"},"content":"* **Typical usage**: Normal or expected usage patterns of the application, such as the frequency of adding, deleting, or viewing contacts during everyday use.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"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","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"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","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"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","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":740,"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","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"DesSnowy":10,"currynia":359,"Incogdino":12,"-":337,"tohjh":5}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"# KonTActs User Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"konTActs is a **desktop app for managing contacts, 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, konTActs can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"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","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"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","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"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","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"DesSnowy":2,"-":203}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eKonTActs\u003c/a\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"KonTActs\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"# KonTActs","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-2/tp/graph/badge.svg)](https://codecov.io/github/AY2425S1-CS2103T-T11-2/tp)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"**KonTActs is a desktop application for managing your students\u0027, fellow TAs\u0027, and professors\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"- If you are interested in using KonTActs, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"- If you are interested about developing KonTActs, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"DesSnowy":4,"currynia":4,"Incogdino":2,"-":13}},{"path":"docs/team/currynia.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Wen Rui\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"- **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" - Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"- **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" - Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" - Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":"- **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" - User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" - Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" - Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" - Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" - Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"- **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" - PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" - Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" - Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" - Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" - Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" - Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"- _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"currynia":50}},{"path":"docs/team/dessnowy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Xiang Yu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"docs/team/incogdino.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Javier\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"Incogdino":9}},{"path":"docs/team/swaminathanviswa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Swaminathan Viswa\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":"* **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" * User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"* **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":"* **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":44,"DesSnowy":2}},{"path":"docs/team/tohjh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Tohjh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided in invalid\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" builder.append(\"; Github: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" .append(person.getGithub());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"Incogdino":2,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"GITHUB\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" + PREFIX_TELEGRAM + \"@viswa \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"John139\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":5,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" * Add assignment grades to an existing person in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String COMMAND_WORD \u003d \"addGrade\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" + \": Adds a grade of an assignment to the person. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" + \"NAME \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" + \"ASSIGNMENT \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" + \"SCORE \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" + \"Example: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" + COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" + \"John Doe \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" + \"Ex09 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" + \"9 \";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" private final Name personName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" private final Float score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"currynia"},"content":" * @param personName Name of the person.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * @param score Score of the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"currynia"},"content":" * @param assignmentName Name of assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public AddGradeCommand(String personName, Float score, String assignmentName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" requireAllNonNull(personName, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" this.personName \u003d new Name(personName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" private static Person createGradeToAddToPerson(Person person, String assignmentName, float score) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" assert person !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" Telegram telegram \u003d person.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" Github github \u003d person.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" Assignment assignment \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" new Assignment(assignmentName, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":" // to add error handling","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Person person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" model.getAddressBook().getPersonList().stream()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" .filter(p -\u003e p.getName().equals(personName))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" .toList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" .get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" model.setPerson(person, createGradeToAddToPerson(person, assignmentName, score));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":" return new CommandResult(\"\"); // placeholder string to be added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":" return personName + \" \" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" if (other instanceof AddGradeCommand otherCommand) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" return otherCommand.personName.equals(personName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.assignmentName, assignmentName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.score, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":106,"tohjh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" private final Name targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" Person personToDelete \u003d lastShownList","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" .stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DesSnowy"},"content":" .filter(person -\u003e person.getName().equals(targetName))","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DesSnowy"},"content":" .findFirst()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":11,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_GITHUB + \"GitHub] \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"john123\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" Github updatedGithub \u003d editPersonDescriptor.getGithub().orElse(personToEdit.getGithub());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" updatedTelegram, updatedTags, updatedGithub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditCommand otherEditCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"tohjh"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SwaminathanViswa"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tohjh"},"content":" setAssignment(toCopy.assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SwaminathanViswa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SwaminathanViswa"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"currynia"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"currynia"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"currynia"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"currynia"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"currynia"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Incogdino"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" return Optional.ofNullable(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"currynia"},"content":" public void setGithub(Github username) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"currynia"},"content":" this.github \u003d username;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditPersonDescriptor otherEditPersonDescriptor)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"tohjh"},"content":" public Optional\u003cAssignment\u003e getAssignment() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"tohjh"},"content":" return Optional.ofNullable(assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"currynia":41,"Incogdino":18,"-":213,"tohjh":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_GITHUB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" Github github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" Person person \u003d new Person(name, phone, email, address, telegram, tagList, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":11,"Incogdino":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ASSIGNMENT, PREFIX_SCORE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" Float score \u003d ParserUtil.parseScore(argMultimap.getValue(PREFIX_SCORE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" String assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" return new AddGradeCommand(name, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"currynia":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"asgn/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_SCORE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"telegram/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"github/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"currynia":2,"Incogdino":1,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"DesSnowy":19,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" editPersonDescriptor.setGithub(ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"Incogdino":4,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" * whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" * Parses a {@code String name} into a {@code Name}. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" * trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SwaminathanViswa"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SwaminathanViswa"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SwaminathanViswa"},"content":" public static Telegram parseTelegram(String address) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(address);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" String trimmedTelegram \u003d address.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"currynia"},"content":" * Parses String assignment without trailing spaces.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" public static String parseAssignmentName(String assignment) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" requireNonNull(assignment);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" return assignment.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" * Parses String into float.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" public static Float parseScore(String score) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" requireNonNull(score);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" return Float.parseFloat(score.trim());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Incogdino"},"content":" * Parses a GitHub {@code String username} into an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Incogdino"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Incogdino"},"content":" * @throws ParseException if the given {@code username} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Incogdino"},"content":" public static Github parseGithub(String username) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Incogdino"},"content":" requireNonNull(username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Incogdino"},"content":" String trimmedUsername \u003d username.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(trimmedUsername)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" throw new ParseException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Incogdino"},"content":" return new Github(trimmedUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":16,"currynia":23,"Incogdino":15,"-":120}},{"path":"src/main/java/seedu/address/model/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":" * Represents an Assignment in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"public class Assignment {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":" public final String assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":" public final float score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":" * Constructs a {@code Assignment}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" * @param assignmentName A valid assignment name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" * @param score A score for the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" public Assignment(String assignmentName, float score) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" return \"Assignment:\" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public float getScore() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" return score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" public String getAssignmentName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" return assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":34}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":" * Represents a Person\u0027s github account in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithubUsername(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"public class Github {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" \"Github usernames should only contain - and alphanumeric characters\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9-]+$\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":" public final String username;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" * Constructs an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" * @param githubUsername A valid GitHub username.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" public Github(String githubUsername) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" requireNonNull(githubUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" checkArgument(isValidGithubUsername(githubUsername), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" username \u003d githubUsername;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" public static boolean isValidGithubUsername(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" return this.username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" return username.equals(otherGithub.username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" return username.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Incogdino":59}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" private final Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" Github github) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * Contains an additional assignment field.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" Github github,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" Assignment assignment) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" requireAllNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" return telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":" public Assignment getAssignment() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" return assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Incogdino"},"content":" public Github getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Incogdino"},"content":" return github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":" * Returns true if both persons have the same identity and data fields. This defines a stronger","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":" * notion of equality between two persons.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"currynia"},"content":" if (!(other instanceof Person otherPerson)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" return","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" name.equals(otherPerson.name)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" .add(\"assignment\", assignment)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":9,"currynia":44,"Incogdino":8,"-":114}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"public class Telegram {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" /*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"friends\"), new Github(\"Alex\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\", \"friends\"), new Github(\"Bernice\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"neighbours\"), new Github(\"Charlotte\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"family\"), new Github(\"david\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"classmates\"), new Github(\"Irfan\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\"), new Github(\"Roy\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":7,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" private final String telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" private final String github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private final Float assignmentScore;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"github\") String github, @JsonProperty(\"assignment\") String assignment,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"assignmentScore\") Float assignmentScore) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tohjh"},"content":" this.assignmentName \u003d assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tohjh"},"content":" this.assignmentScore \u003d assignmentScore;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Incogdino"},"content":" github \u003d source.getGithub().username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tohjh"},"content":" Assignment assignment \u003d source.getAssignment();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tohjh"},"content":" assignmentName \u003d assignment !\u003d null ? assignment.assignmentName : null; // Get assignment name","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tohjh"},"content":" assignmentScore \u003d assignment !\u003d null ? assignment.score : null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Incogdino"},"content":" if (github \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Incogdino"},"content":" final Github modelGithub \u003d new Github(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tohjh"},"content":" Assignment modelAssignment \u003d null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tohjh"},"content":" if (assignmentName !\u003d null \u0026\u0026 assignmentScore !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tohjh"},"content":" modelAssignment \u003d new Assignment(assignmentName, assignmentScore); // Create Assignment object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" modelAddress, modelTelegram, modelTags, modelGithub, modelAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":15,"currynia":5,"Incogdino":12,"-":107,"tohjh":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tohjh"},"content":" private Label assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" private Label github;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tohjh"},"content":" if (person.getAssignment() !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" assignment.setText(person.getAssignment().toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":" } else {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":" assignment.setText(\"No assignment available\"); // Optional: for better user feedback","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" if (person.getGithub() !\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" github.setText(person.getGithub().toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" github.setText(\"GitHub username unspecified\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Incogdino":7,"-":60,"tohjh":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tohjh"},"content":" \u003cLabel fx:id\u003d\"assignment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$assignment\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$Github\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Incogdino":1,"-":36,"tohjh":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DesSnowy"},"content":" String deleteCommand \u003d \"delete\" + NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":3,"DesSnowy":3,"Incogdino":1,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" public void constructor_nullAssignmentFormat_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGradeCommand(null, 0f, null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public void constructor_validAddGradeCommandFormat_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(\"John Doe\", 9.0f, \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" assertNotNull(command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" public void execute_validPersonGrade_success() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" Person testPerson \u003d TypicalPersons.ALICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" testPerson.getName().toString(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" 9.0f,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" command.execute(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" assertEquals(model","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" .getAddressBook()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" .getPersonList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" .stream().filter(person -\u003e person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" .getName()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" .equals(testPerson.getName())).toList().get(0).getAssignment().getScore(), 9.0f);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amy\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bob\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_BOB \u003d \"Bob\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_AMY \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" public static final String VALID_ASSIGNMENT_ONE \u003d \"Ex01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" public static final Float VALID_SCORE \u003d 10f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" public static final String ASSIGNMENT_DESC_ONE \u003d \" \" + PREFIX_ASSIGNMENT + VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" public static final String SCORE_DESC \u003d \" \" + PREFIX_SCORE + VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" public static final String VALID_NAME_MISSING \u003d \"Gonathan Lee\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"DesSnowy":2,"currynia":7,"Incogdino":5,"-":128}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_MISSING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DesSnowy"},"content":" Person missingPerson \u003d new PersonBuilder().withName(VALID_NAME_MISSING).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(missingPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DesSnowy"},"content":" Person hiddenPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" // ensures that notShownName is still in address book list","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":" assertTrue(model.hasPerson(hiddenPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(hiddenPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DesSnowy"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DesSnowy"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(bob.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DesSnowy"},"content":" Name targetName \u003d new PersonBuilder().withName(\"Alice\").build().getName();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DesSnowy"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"DesSnowy":26,"-":99}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" public void assignment_null_handled() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" Assignment testAssignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" assertEquals(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" .build().getAssignment()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":" .orElse(testAssignment),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"currynia"},"content":" testAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_SECOND_PERSON, DESC_AMY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_FIRST_PERSON, DESC_BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"currynia":23,"-":176}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":2,"-":69}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" // multiple telegram IDs","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SwaminathanViswa"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Incogdino"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_GITHUB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + GITHUB_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":36,"Incogdino":4,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" private final AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" public void parse_allFieldsSpecified_success() throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" String userInput \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" AddGradeCommand expectedCommand \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" VALID_NAME_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" VALID_SCORE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" VALID_ASSIGNMENT_ONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand.COMMAND_WORD + NAME_DESC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DesSnowy"},"content":" assertEquals(new DeleteCommand(new Name(VALID_NAME_AMY)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"currynia"},"content":" public void parseCommand_addGrade() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"currynia"},"content":" String arguments \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d (AddGradeCommand) parser.parseCommand(AddGradeCommand.COMMAND_WORD + arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"currynia"},"content":" assertEquals(command, new AddGradeCommand(VALID_NAME_AMY, VALID_SCORE, VALID_ASSIGNMENT_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":6,"currynia":11,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY, new DeleteCommand(new Name(VALID_NAME_AMY)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"DesSnowy":10,"-":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":2,"-":206}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d \"Amy-123\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"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","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"currynia"},"content":" public void parseAssignment_removeTrailingSpaces() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"currynia"},"content":" String testString \u003d \"Ex01 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"currynia"},"content":" String expectedString \u003d testString.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseAssignmentName(testString), expectedString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"currynia"},"content":" public void parseScore_parsesCorrectScore() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"currynia"},"content":" String testString \u003d \"10.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"currynia"},"content":" Float expected \u003d 10f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseScore(testString), expected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"SwaminathanViswa"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" public void parseGithub_withInvalidUsername_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGithub(INVALID_GITHUB));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":25,"currynia":15,"Incogdino":6,"-":196}},{"path":"src/test/java/seedu/address/model/assignment/AssignmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"public class AssignmentTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" private final Assignment assignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" String expected \u003d \"Assignment:\" + VALID_ASSIGNMENT_ONE + \" \" + VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" assertEquals(expected, assignment.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SwaminathanViswa"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" // different GitHub account -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SwaminathanViswa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SwaminathanViswa"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":" + \", github\u003d\" + ALICE.getGithub()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" + \", assignment\u003d\" + ALICE.getAssignment() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"currynia":15,"Incogdino":4,"-":88}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" // null address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" // invalid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" // valid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"-\")); // one character","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d new Telegram(\"Valid Telegram\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(new Telegram(\"Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(new Telegram(\"Other Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" Person defaultPerson \u003d new PersonBuilder().buildWithAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(defaultPerson);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" assertEquals(defaultPerson, person.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" public void toModelType_nullGithub_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, null, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"currynia"},"content":" INVALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" null, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"currynia"},"content":" invalidTags, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SwaminathanViswa"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, INVALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SwaminathanViswa"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Incogdino"},"content":" public void toModelType_invalidGithubUsername_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Incogdino"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" INVALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" String expectedMessage \u003d Github.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":21,"currynia":26,"Incogdino":10,"-":99}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" System.out.println(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"currynia":1,"-":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" public EditPersonDescriptorBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(new Github(username));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":10,"Incogdino":10,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" public static final String DEFAULT_GITHUB \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_ASSIGNMENT_NAME \u003d \"Ex01\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final Float DEFAULT_ASSIGNMENT_SCORE \u003d 0f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" github \u003d new Github(DEFAULT_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" assignment \u003d new Assignment(DEFAULT_ASSIGNMENT_NAME, DEFAULT_ASSIGNMENT_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" assignment \u003d personToCopy.getAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Incogdino"},"content":" public PersonBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Incogdino"},"content":" this.github \u003d new Github(username);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" * Sets the {@code Assignment} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" public PersonBuilder witAssignment(String assignment, Float score) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"currynia"},"content":" this.assignment \u003d new Assignment(assignment, score);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":" return new Person(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"currynia"},"content":" public Person buildWithAssignment() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"currynia":18,"Incogdino":13,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_GITHUB + person.getGithub().username + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.username).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":4,"Incogdino":5,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Alice\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Benson\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Benson\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Carl\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Carl\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(\"10th street\").withTelegram(\"@Daniel\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Daniel\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Elle\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Elle\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Fiona\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Fiona\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@George\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"George\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Hoon\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Hoon\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Ida\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Ida\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_FRIEND).withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"currynia":3,"Incogdino":7,"-":62}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"By CS2103T-T11-2","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"* This is **a project for CS2030S TAs**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * as a reference to get their students\u0027 details more easily","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" * as a tool to help them keep track of their students.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"* The project simulates an ongoing software project for a desktop application (called _konTActs_) used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"* It is named `konTActs` because it is developed for CS2030S TAs to manage their students, store their github details and other contacts like professors and fellow TAs. ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2425s1-cs2103t-t11-2.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"You can reach us at the email `e1249111[at]u.nus.edu`","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tohjh"},"content":"### Toh Jia Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tohjh"},"content":"\u003cimg src\u003d\"images/tohjh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tohjh"},"content":"[[github](http://github.com/tohjh)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tohjh"},"content":"[[portfolio](team/tohjh.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tohjh"},"content":"* Role: Developer","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tohjh"},"content":"* Responsibilities: Deliverables and deadline","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"### Wen Rui","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"\u003cimg src\u003d\"images/currynia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"[[github](http://github.com/currynia)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"[[portfolio](team/currynia.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":"### Lau Xiang Yu","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":"\u003cimg src\u003d\"images/dessnowy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":"[[github](http://github.com/DesSnowy)] ","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":"[[portfolio](team/dessnowy.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"### Swaminathan Viswa","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":"\u003cimg src\u003d\"images/swaminathanviswa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"[[github](http://github.com/SwaminathanViswa)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":"[[portfolio](team/swaminathanviswa.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"* Responsibilities: Responsible for quality of project documentations","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" ### Javier Tan Meng Wee","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"\u003cimg src\u003d\"images/incogdino.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":"[[github](http://github.com/incogdino)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":"[[portfolio](team/incogdino.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":6,"DesSnowy":7,"currynia":5,"Incogdino":5,"-":37,"tohjh":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"# KonTActs Developer Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"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","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"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","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"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","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"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":"2024-09-28","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"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","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"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","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"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","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"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","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"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","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"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","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":222,"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","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"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","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"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","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"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","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"currynia"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"currynia"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"currynia"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"currynia"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"currynia"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"currynia"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"currynia"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"currynia"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"currynia"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"currynia"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"currynia"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"currynia"},"content":"- has a need to manage a significant number of contacts","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":"- can type fast","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"SwaminathanViswa"},"content":"| Priority | As a/an …​ | I want to …​ | So that …​ |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DesSnowy"},"content":"|-------|------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s github username | I can easily reference them when grading assignments. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | user | add the student\u0027s contact number | I can easily reference them when I need to contact my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add the contact details of other TAs | I can quickly reach out for help or collaboration. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add contact details of professors | I can easily reach them for guidance or to pass on important information. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | delete contacts easily | I dont clutter the list with unwanted contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store the grades and progress of my students | I can keep track of which of my students need more guidance and follow up. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s telegram username | I can easily reference them and contact them when needed to. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | see the student\u0027s MC or reasoning when they do not turn up for lessons | I can create make up lessons / check up on them. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | have a function to hide the details of students that I do not need | I can only the the information that I want to see. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | view the last modification date of student contact details | I can confirm the accuracy and recency of the information stored. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | create contacts with optional fields | I can resepct the privacy of my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for a student’s GitHub username | I can quickly access their repository for grading and feedback. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | potential user | see the application populated with sample data | I can see how the app looks like when it is in use. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | put the contacts into different tabs | I can easily navigate between different types of contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line interface to search for contacts | I can integrate the tool smoothly into my existing workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for the contact details of professors/ other TAs | I can quickly contact them for help if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | find my students house in time | I can offer them help in times of crisis. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | organise the contact of my students | I can view the details of each student with greater ease. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | import student contact information from a file | I can easily transfer data between devices. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | export student contact information to a file | I can backup or share contact details with other TAs or professors if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | flag specific students for follow-up | I can easily identify students who may need additional support or guidance. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | choose to sort my students | I can group students based on their proficiency. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter the contact details that is shown | I can easily find the information of a particular group. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter contacts based on a certain criteria | I can access a specific subset of students that I want. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | tag students with custom labels | I can categorize students based on their progress or needs. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line to access my students work | have their work and contact and tags all tied together in one smooth workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | experienced user | create shortcuts for commands that I use frequently | I can access the frequently used information quickly. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | new user | use a help function to check what this app offers | I can easily have the details of the commands to use in my fingertips. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | create automatic flags to indicate if a student\u0027s work is marked | I can monitor grading deadlines so that I can stay on top of my responsibilities without missing any critical dates. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"currynia"},"content":"(For all use cases below, the **System** is the `KonTActs` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"currynia"},"content":"**Use case: UC01 - Add contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"currynia"},"content":"1. User chooses to add a contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"currynia"},"content":"3. User enters the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"currynia"},"content":"4. KonTActs adds the new contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the input format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"currynia"},"content":" - 3a1.KonTActs requests for the corrected input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"currynia"},"content":" - 3b2. User enters a new input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until input format is correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"currynia"},"content":" Use cases resume from step 4.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"currynia"},"content":"**Use case: UC02 - Delete contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"currynia"},"content":"1. The task that the user wants to delete exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"currynia"},"content":"1. User indicates to delete a task.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"currynia"},"content":"2. KonTActs deletes the tasks and indicates success.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"currynia"},"content":"- 1a. KonTActs detects an error in the input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"currynia"},"content":" - 1a1.KonTActs requests for the user to try again.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"currynia"},"content":" - 1a2. User enters the command again","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input entered is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"currynia"},"content":"**Use case: UC03 - Add grades of students**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to add grades exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"currynia"},"content":"2. The assignment that the user wants to add a grade to exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"currynia"},"content":"1. User chooses to add grades for a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the assignment and grade.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"currynia"},"content":"4. KonTActs updates the grade of the student.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"currynia"},"content":"- 4a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"currynia"},"content":" - 4a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"currynia"},"content":" - 4a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"currynia"},"content":" - Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"currynia"},"content":"**Use case: UC04 - View Contact**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"currynia"},"content":"1. Current UI is not showing the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"currynia"},"content":"2. User chooses to view the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"currynia"},"content":"3. KonTActs displays the full list of contacts.\\","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"currynia"},"content":"- 1a. User has previously filtered the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays the full contact list, removing the previous filters.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"currynia"},"content":"- 1b. KonTActs detects an error (e.g., unable to retrieve contacts).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"currynia"},"content":" - 1b1. KonTActs displays an error message.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"currynia"},"content":"**Use case: UC05 - Update contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"currynia"},"content":"1. TA chooses to update a contact’s details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the contact’s identifier.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"currynia"},"content":"3. TA enters the identifier of the contact to update.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"currynia"},"content":"4. KonTActs displays the current details and requests the changes.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"currynia"},"content":"5. TA updates the relevant details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"currynia"},"content":"6. KonTActs saves and displays the changes.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs identifies that there is no such contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"currynia"},"content":" - 3a2. TA enters the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"currynia"},"content":"**Use case: UC06 - Filter Contact List**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"currynia"},"content":"1. User chooses to filter the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the filter criteria (current overall grades, name, tele handle).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"currynia"},"content":"3. User enters the filter criteria.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"currynia"},"content":"4. KonTActs filters the contact list based on the entered criteria and displays the filtered list.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered filter criteria (e.g., incorrect input - invalid score input).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct filter criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"currynia"},"content":" - 3a2. Users enter new criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the criteria entered are valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the filter action.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"currynia"},"content":"- \\*a1. KonTActs stops the filter operation and returns to the unfiltered contact list by using list","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"currynia"},"content":"**Use case: UC07 - Create shortcut for commands**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"currynia"},"content":"1. User indicates to create a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"currynia"},"content":"2. KonTActs request for the command that is frequently used.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"currynia"},"content":"3. User enters the command to be shortened.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"currynia"},"content":"4. KonTActs request for the shortcut input to replace the command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"currynia"},"content":"5. User enters the shortcut input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"currynia"},"content":"6. KonTActs stores the shortcut and indicates success.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects that the command entered is not valid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"currynia"},"content":" - 3a2. User enters a new command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until the command entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"currynia"},"content":"- 5a. KonTActs detects that the shortcut is already in use.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"currynia"},"content":" - 5a1. KonTActs request for a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"currynia"},"content":" - 5a2. User enters a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"currynia"},"content":" - Steps 5a1 - 5a2 are repeated until the shortcut entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"currynia"},"content":" Use case resumes from step 6.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the creation of a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the creation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"currynia"},"content":"**Use case: UC08 - Sort students based on proficiency**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"currynia"},"content":"1. The address book contains a list of students/ contacts.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"currynia"},"content":"2. Contacts should have a proficiency rating associated to them.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"currynia"},"content":"1. User chooses to sort the students based on their proficiency.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"currynia"},"content":"2. User enters the sort command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"currynia"},"content":"3. KonTActs returns the list of students in the sorted order.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"currynia"},"content":"**Use case: UC09 - Export contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"currynia"},"content":"1. User chooses to export the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"currynia"},"content":"3. User selects the desired format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"currynia"},"content":"4. KonTActs exports the contact list to the specified format and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"currynia"},"content":"- 2a. User selects an unsupported format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"currynia"},"content":" - 2a1. KonTActs displays an error message and provides the list of formats that are supported.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"currynia"},"content":"**Use case: UC10 - Request for help**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"currynia"},"content":"1. User inputs help command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"currynia"},"content":"2. KonTActs shows a help page.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"currynia"},"content":"- 1a. User inputs help for a specific command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays a help page for that command.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"currynia"},"content":"**Use case: UC11 - Tag students with custom labels**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to tag exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"currynia"},"content":"1. User chooses to tag a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the tag to label the student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"currynia"},"content":"4. KonTActs tags the student with the suggested label.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"currynia"},"content":" - 3a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"currynia"},"content":"**Use case: UC12 - View last modification date of contact details**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"currynia"},"content":"1. User requests for last modification date of contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"currynia"},"content":"2. KonTActs shows the last modification date for that contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"currynia"},"content":"- 1a. User inputs a non-existing contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs requests for corrected contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"currynia"},"content":" - 1a2. User inputs new contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input contact is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"currynia"},"content":"**Use case: UC13 - Import contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"currynia"},"content":"1. User chooses to import the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"currynia"},"content":"3. User selects the desired file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"currynia"},"content":"4. KonTActs import the contact list from the specified file and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an unsupported or corrupted file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs indicates it is unable to import from that file and requests for a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"currynia"},"content":" - 3a2. User selects a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until KonTActs is able to import contacts from the file.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the import.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"currynia"},"content":"**Use case: UC14 - Create automatic flags for students’ work if marked**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"currynia"},"content":"Actor: TA","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"currynia"},"content":"1. TA marks a student’s work.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"currynia"},"content":"2. KonTActs creates a flag to show the student’s work as marked.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Incogdino"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":666,"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","isFullCredit":false},{"lineNumber":667,"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","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Incogdino"},"content":"4. Commands should be easy to remember.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Incogdino"},"content":"5. Ui should be easy to navigate and intuitive.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Incogdino"},"content":"6. KonTActs should be easy to use for new users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Incogdino"},"content":"7. The system should work on both 32 bit and 64 bit environments.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Incogdino"},"content":"8. Contact details are securely stored.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Incogdino"},"content":"9. The application should have an uptime of at least 99.9% to ensure constant availability for users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Incogdino"},"content":"10. The application should automatically save data after every change to avoid data loss in case of a crash.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Incogdino"},"content":"11. There should be proper documentation for the code and application usage to assist developers in future updates.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Incogdino"},"content":"12. Error messages should be descriptive, providing users with clear guidance on how to resolve the issue.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Incogdino"},"content":"13. Searching for or filtering contacts should take less than 5 seconds.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Incogdino"},"content":"14. Stored contacts are persisted between sessions.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"DesSnowy"},"content":"* **Contact**: An individual (e.g. student) stored in the system, typically having details regarding them such as their name, github username and etc.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"DesSnowy"},"content":"* **Easy to use for new users**: intuitive commands that are easy to understand and UI that is easy to navigate.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"DesSnowy"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"DesSnowy"},"content":"* **Average typing speed**: about 40 words per minute.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"DesSnowy"},"content":"* **Uptime**: The system should be operational during that period of time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"DesSnowy"},"content":"* **Between sessions**: Every opening and closing of the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"DesSnowy"},"content":"* **Proper documentation**: A detailed user and developer guide which helps future users and developers to understand and use the code.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"DesSnowy"},"content":"* **Typical usage**: Normal or expected usage patterns of the application, such as the frequency of adding, deleting, or viewing contacts during everyday use.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"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","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"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","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"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","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":740,"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","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"DesSnowy":10,"currynia":359,"Incogdino":12,"-":337,"tohjh":5}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"# KonTActs User Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"konTActs is a **desktop app for managing contacts, 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, konTActs can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"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","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"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","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"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","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"DesSnowy":2,"-":203}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eKonTActs\u003c/a\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"KonTActs\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"# KonTActs","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-2/tp/graph/badge.svg)](https://codecov.io/github/AY2425S1-CS2103T-T11-2/tp)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"**KonTActs is a desktop application for managing your students\u0027, fellow TAs\u0027, and professors\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"- If you are interested in using KonTActs, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"- If you are interested about developing KonTActs, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"DesSnowy":4,"currynia":4,"Incogdino":2,"-":13}},{"path":"docs/team/currynia.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Wen Rui\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"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-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"- **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" - Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"- **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" - Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" - Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":"- **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" - User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" - Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" - Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" - Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" - Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"- **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" - PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" - Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" - Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" - Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" - Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" - Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"- _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"currynia":50}},{"path":"docs/team/dessnowy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Xiang Yu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"docs/team/incogdino.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Javier\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"Incogdino":9}},{"path":"docs/team/swaminathanviswa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Swaminathan Viswa\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"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-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":"* **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" * User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"* **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":"* **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":44,"DesSnowy":2}},{"path":"docs/team/tohjh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Tohjh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" builder.append(\"; Github: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" .append(person.getGithub());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"Incogdino":2,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"GITHUB\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" + PREFIX_TELEGRAM + \"@viswa \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"John139\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":5,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" * Add assignment grades to an existing person in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String COMMAND_WORD \u003d \"addGrade\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" + \": Adds a grade of an assignment to the person. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" + \"NAME \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" + \"ASSIGNMENT \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" + \"SCORE \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" + \"Example: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" + COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" + \"John Doe \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" + \"Ex09 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" + \"9 \";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" private final Name personName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" private final Float score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"currynia"},"content":" * @param personName Name of the person.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * @param score Score of the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"currynia"},"content":" * @param assignmentName Name of assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public AddGradeCommand(String personName, Float score, String assignmentName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" requireAllNonNull(personName, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" this.personName \u003d new Name(personName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" private static Person createGradeToAddToPerson(Person person, String assignmentName, float score) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" assert person !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" Telegram telegram \u003d person.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" Github github \u003d person.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" Assignment assignment \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" new Assignment(assignmentName, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":" // to add error handling","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Person person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" model.getAddressBook().getPersonList().stream()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" .filter(p -\u003e p.getName().equals(personName))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" .toList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" .get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" model.setPerson(person, createGradeToAddToPerson(person, assignmentName, score));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":" return new CommandResult(\"\"); // placeholder string to be added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":" return personName + \" \" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" if (other instanceof AddGradeCommand otherCommand) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" return otherCommand.personName.equals(personName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.assignmentName, assignmentName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.score, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":106,"tohjh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" + \": Deletes the person identified by the name shown in the displayed person list.\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" + PREFIX_NAME + \"NAME\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DesSnowy"},"content":" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":" private final Name targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DesSnowy"},"content":" Person personToDelete \u003d lastShownList","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":" .stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DesSnowy"},"content":" .filter(person -\u003e person.getName().equals(targetName))","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DesSnowy"},"content":" .findFirst()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DesSnowy"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DesSnowy"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DesSnowy"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":17,"-":55}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_GITHUB + \"GitHub] \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"john123\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" Github updatedGithub \u003d editPersonDescriptor.getGithub().orElse(personToEdit.getGithub());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" updatedTelegram, updatedTags, updatedGithub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditCommand otherEditCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"tohjh"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SwaminathanViswa"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tohjh"},"content":" setAssignment(toCopy.assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SwaminathanViswa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SwaminathanViswa"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"currynia"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"currynia"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"currynia"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"currynia"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"currynia"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Incogdino"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" return Optional.ofNullable(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"currynia"},"content":" public void setGithub(Github username) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"currynia"},"content":" this.github \u003d username;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditPersonDescriptor otherEditPersonDescriptor)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"tohjh"},"content":" public Optional\u003cAssignment\u003e getAssignment() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"tohjh"},"content":" return Optional.ofNullable(assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"currynia":41,"Incogdino":18,"-":213,"tohjh":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_GITHUB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" Github github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" Person person \u003d new Person(name, phone, email, address, telegram, tagList, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":11,"Incogdino":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ASSIGNMENT, PREFIX_SCORE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" Float score \u003d ParserUtil.parseScore(argMultimap.getValue(PREFIX_SCORE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" String assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" return new AddGradeCommand(name, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"currynia":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"asgn/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_SCORE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"telegram/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"github/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"currynia":2,"Incogdino":1,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"DesSnowy":19,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" editPersonDescriptor.setGithub(ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"Incogdino":4,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" * whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" * Parses a {@code String name} into a {@code Name}. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" * trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SwaminathanViswa"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SwaminathanViswa"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SwaminathanViswa"},"content":" public static Telegram parseTelegram(String address) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(address);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" String trimmedTelegram \u003d address.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"currynia"},"content":" * Parses String assignment without trailing spaces.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" public static String parseAssignmentName(String assignment) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" requireNonNull(assignment);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" return assignment.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" * Parses String into float.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" public static Float parseScore(String score) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" requireNonNull(score);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" return Float.parseFloat(score.trim());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Incogdino"},"content":" * Parses a GitHub {@code String username} into an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Incogdino"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Incogdino"},"content":" * @throws ParseException if the given {@code username} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Incogdino"},"content":" public static Github parseGithub(String username) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Incogdino"},"content":" requireNonNull(username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Incogdino"},"content":" String trimmedUsername \u003d username.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(trimmedUsername)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" throw new ParseException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Incogdino"},"content":" return new Github(trimmedUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":16,"currynia":23,"Incogdino":15,"-":120}},{"path":"src/main/java/seedu/address/model/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":" * Represents an Assignment in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"public class Assignment {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":" public final String assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":" public final float score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":" * Constructs a {@code Assignment}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" * @param assignmentName A valid assignment name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" * @param score A score for the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" public Assignment(String assignmentName, float score) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" return \"Assignment:\" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public float getScore() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" return score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" public String getAssignmentName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" return assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":34}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":" * Represents a Person\u0027s github account in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithubUsername(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"public class Github {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" \"Github usernames should only contain - and alphanumeric characters\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":" public final String username;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" * Constructs an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" * @param githubUsername A valid GitHub username.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" public Github(String githubUsername) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" requireNonNull(githubUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" checkArgument(isValidGithubUsername(githubUsername), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" username \u003d githubUsername;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" * Returns if a given string is a valid username.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" public static boolean isValidGithubUsername(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" return test.length() \u003c\u003d 39 \u0026\u0026 test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" return this.username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" return username.equals(otherGithub.username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" return username.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Incogdino":59}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" private final Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" Github github) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * Contains an additional assignment field.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" Github github,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" Assignment assignment) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" requireAllNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" return telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":" public Assignment getAssignment() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" return assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Incogdino"},"content":" public Github getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Incogdino"},"content":" return github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":" * Returns true if both persons have the same identity and data fields. This defines a stronger","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":" * notion of equality between two persons.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"currynia"},"content":" if (!(other instanceof Person otherPerson)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" return","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" name.equals(otherPerson.name)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" .add(\"assignment\", assignment)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":9,"currynia":44,"Incogdino":8,"-":114}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"public class Telegram {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" /*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"friends\"), new Github(\"Alex\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\", \"friends\"), new Github(\"Bernice\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"neighbours\"), new Github(\"Charlotte\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"family\"), new Github(\"david\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"classmates\"), new Github(\"Irfan\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\"), new Github(\"Roy\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":7,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" private final String telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" private final String github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private final Float assignmentScore;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"github\") String github, @JsonProperty(\"assignment\") String assignment,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"assignmentScore\") Float assignmentScore) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tohjh"},"content":" this.assignmentName \u003d assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tohjh"},"content":" this.assignmentScore \u003d assignmentScore;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Incogdino"},"content":" github \u003d source.getGithub().username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tohjh"},"content":" Assignment assignment \u003d source.getAssignment();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tohjh"},"content":" assignmentName \u003d assignment !\u003d null ? assignment.assignmentName : null; // Get assignment name","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tohjh"},"content":" assignmentScore \u003d assignment !\u003d null ? assignment.score : null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Incogdino"},"content":" if (github \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Incogdino"},"content":" final Github modelGithub \u003d new Github(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tohjh"},"content":" Assignment modelAssignment \u003d null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tohjh"},"content":" if (assignmentName !\u003d null \u0026\u0026 assignmentScore !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tohjh"},"content":" modelAssignment \u003d new Assignment(assignmentName, assignmentScore); // Create Assignment object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" modelAddress, modelTelegram, modelTags, modelGithub, modelAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":15,"currynia":5,"Incogdino":12,"-":107,"tohjh":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tohjh"},"content":" private Label assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" private Label github;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tohjh"},"content":" if (person.getAssignment() !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" assignment.setText(person.getAssignment().toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":" } else {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":" assignment.setText(\"No assignment available\"); // Optional: for better user feedback","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" if (person.getGithub() !\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" github.setText(person.getGithub().toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" github.setText(\"GitHub username unspecified\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Incogdino":7,"-":60,"tohjh":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tohjh"},"content":" \u003cLabel fx:id\u003d\"assignment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$assignment\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$Github\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Incogdino":1,"-":36,"tohjh":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DesSnowy"},"content":" String deleteCommand \u003d \"delete\" + NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":3,"DesSnowy":3,"Incogdino":1,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" public void constructor_nullAssignmentFormat_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGradeCommand(null, 0f, null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public void constructor_validAddGradeCommandFormat_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(\"John Doe\", 9.0f, \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" assertNotNull(command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" public void execute_validPersonGrade_success() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" Person testPerson \u003d TypicalPersons.ALICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" testPerson.getName().toString(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" 9.0f,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" command.execute(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" assertEquals(model","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" .getAddressBook()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" .getPersonList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" .stream().filter(person -\u003e person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" .getName()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" .equals(testPerson.getName())).toList().get(0).getAssignment().getScore(), 9.0f);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amy\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bob\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_BOB \u003d \"Bob\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_AMY \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" public static final String VALID_ASSIGNMENT_ONE \u003d \"Ex01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" public static final Float VALID_SCORE \u003d 10f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" public static final String ASSIGNMENT_DESC_ONE \u003d \" \" + PREFIX_ASSIGNMENT + VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" public static final String SCORE_DESC \u003d \" \" + PREFIX_SCORE + VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" public static final String VALID_NAME_MISSING \u003d \"Gonathan Lee\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"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","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"DesSnowy":2,"currynia":7,"Incogdino":5,"-":128}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_MISSING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DesSnowy"},"content":" Person missingPerson \u003d new PersonBuilder().withName(VALID_NAME_MISSING).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(missingPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DesSnowy"},"content":" Person hiddenPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" // ensures that notShownName is still in address book list","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":" assertTrue(model.hasPerson(hiddenPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(hiddenPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DesSnowy"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DesSnowy"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(bob.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DesSnowy"},"content":" Name targetName \u003d new PersonBuilder().withName(\"Alice\").build().getName();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DesSnowy"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"DesSnowy":26,"-":99}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" public void assignment_null_handled() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" Assignment testAssignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" assertEquals(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" .build().getAssignment()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":" .orElse(testAssignment),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"currynia"},"content":" testAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_SECOND_PERSON, DESC_AMY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_FIRST_PERSON, DESC_BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"currynia":23,"-":176}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":2,"-":69}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" // multiple telegram IDs","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SwaminathanViswa"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Incogdino"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_GITHUB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + GITHUB_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":36,"Incogdino":4,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" private final AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" public void parse_allFieldsSpecified_success() throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" String userInput \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" AddGradeCommand expectedCommand \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" VALID_NAME_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" VALID_SCORE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" VALID_ASSIGNMENT_ONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand.COMMAND_WORD + NAME_DESC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DesSnowy"},"content":" assertEquals(new DeleteCommand(new Name(VALID_NAME_AMY)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"currynia"},"content":" public void parseCommand_addGrade() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"currynia"},"content":" String arguments \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d (AddGradeCommand) parser.parseCommand(AddGradeCommand.COMMAND_WORD + arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"currynia"},"content":" assertEquals(command, new AddGradeCommand(VALID_NAME_AMY, VALID_SCORE, VALID_ASSIGNMENT_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":6,"currynia":11,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY, new DeleteCommand(new Name(VALID_NAME_AMY)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"DesSnowy":10,"-":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":2,"-":206}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d \"Amy-123\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"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","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"currynia"},"content":" public void parseAssignment_removeTrailingSpaces() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"currynia"},"content":" String testString \u003d \"Ex01 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"currynia"},"content":" String expectedString \u003d testString.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseAssignmentName(testString), expectedString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"currynia"},"content":" public void parseScore_parsesCorrectScore() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"currynia"},"content":" String testString \u003d \"10.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"currynia"},"content":" Float expected \u003d 10f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseScore(testString), expected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"SwaminathanViswa"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" public void parseGithub_withInvalidUsername_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGithub(INVALID_GITHUB));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":25,"currynia":15,"Incogdino":6,"-":196}},{"path":"src/test/java/seedu/address/model/assignment/AssignmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"public class AssignmentTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" private final Assignment assignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" String expected \u003d \"Assignment:\" + VALID_ASSIGNMENT_ONE + \" \" + VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" assertEquals(expected, assignment.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":17}},{"path":"src/test/java/seedu/address/model/person/GithubTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"public class GithubTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" assertThrows(NullPointerException.class, () -\u003e new Github(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" public void constructor_invalidGithub_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" String emptyUsername \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" String usernameWithWhitespaces \u003d \"john asd\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" String usernameWithRestrictedSpecialCharacters \u003d \"john@asd\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(emptyUsername));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(usernameWithWhitespaces));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(usernameWithRestrictedSpecialCharacters));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" public void isValidUsername() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" // null username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" assertThrows(NullPointerException.class, () -\u003e Github.isValidGithubUsername(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" // invalid username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-John\")); // Starts with hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John-\")); // Ends with hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-John-Doe\")); // Starts with hypen and hyphen in between","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John--Doe\")); // consecutive hypens only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-\")); // hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" // long username (\u003e39 characters)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ-beepo\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"@\")); // special character only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John Doe\")); // whitespace between name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" // valid username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"John-Doe\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"J\")); // one character","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ-beep\")); // long username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" Github github \u003d new Github(\"Valid-Username\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" assertTrue(github.equals(new Github(\"Valid-Username\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" assertTrue(github.equals(github));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(new Github(\"Other-Valid-Username\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Incogdino":68}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SwaminathanViswa"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" // different GitHub account -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SwaminathanViswa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SwaminathanViswa"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":" + \", github\u003d\" + ALICE.getGithub()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" + \", assignment\u003d\" + ALICE.getAssignment() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"currynia":15,"Incogdino":4,"-":88}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" // null address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" // invalid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" // valid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"-\")); // one character","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d new Telegram(\"Valid Telegram\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(new Telegram(\"Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(new Telegram(\"Other Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" Person defaultPerson \u003d new PersonBuilder().buildWithAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(defaultPerson);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" assertEquals(defaultPerson, person.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" public void toModelType_nullGithub_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, null, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"currynia"},"content":" INVALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" null, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"currynia"},"content":" invalidTags, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SwaminathanViswa"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, INVALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SwaminathanViswa"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Incogdino"},"content":" public void toModelType_invalidGithubUsername_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Incogdino"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" INVALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" String expectedMessage \u003d Github.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":21,"currynia":26,"Incogdino":10,"-":99}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" System.out.println(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"currynia":1,"-":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" public EditPersonDescriptorBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(new Github(username));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":10,"Incogdino":10,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" public static final String DEFAULT_GITHUB \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_ASSIGNMENT_NAME \u003d \"Ex01\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final Float DEFAULT_ASSIGNMENT_SCORE \u003d 0f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" github \u003d new Github(DEFAULT_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" assignment \u003d new Assignment(DEFAULT_ASSIGNMENT_NAME, DEFAULT_ASSIGNMENT_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" assignment \u003d personToCopy.getAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Incogdino"},"content":" public PersonBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Incogdino"},"content":" this.github \u003d new Github(username);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" * Sets the {@code Assignment} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" public PersonBuilder witAssignment(String assignment, Float score) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"currynia"},"content":" this.assignment \u003d new Assignment(assignment, score);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":" return new Person(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"currynia"},"content":" public Person buildWithAssignment() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"currynia":18,"Incogdino":13,"-":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_GITHUB + person.getGithub().username + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.username).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":4,"Incogdino":5,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Alice\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Benson\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Benson\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Carl\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Carl\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(\"10th street\").withTelegram(\"@Daniel\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Daniel\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Elle\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Elle\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Fiona\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Fiona\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@George\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"George\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Hoon\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Hoon\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Ida\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Ida\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_FRIEND).withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"currynia":3,"Incogdino":7,"-":62}}] diff --git a/AY2425S1-CS2103T-T11-2_tp_master/commits.json b/AY2425S1-CS2103T-T11-2_tp_master/commits.json index b6c01ac2..46412483 100644 --- a/AY2425S1-CS2103T-T11-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T11-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SwaminathanViswa":[{"date":"2024-09-21","commitResults":[{"hash":"59cc0ac4f3dc4927bbe1a47660696ac21b549078","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-28","commitResults":[{"hash":"6bdf2144b42f267d21d5d684cc8ca15723fc157a","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6222aabf5182eb25bca4f452470850219a9c109e","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"e10a952360859bb79ea9bd84183cacddc0d15a66","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9a331d8e27dce909d71a7ab1e556d7c77892219","isMergeCommit":true,"messageTitle":"Merge pull request #22 from SwaminathanViswa/branch-update-AboutUs-page","messageBody":"Update Viswa\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"18f9d47d026fabbfc01e64c044e11f46b5b0b3f2","isMergeCommit":false,"messageTitle":"Update title and repository name in yml file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"65925df8cdf91bb50064de1ce7a113850f7e008b","isMergeCommit":false,"messageTitle":"Update User Stories section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-09-29","commitResults":[{"hash":"ef82d2b33e03eb645da3463e64959f7d493d93ce","isMergeCommit":true,"messageTitle":"Merge pull request #44 from currynia/branch-update-readme","messageBody":"Update readme (A4)","fileTypesAndContributionMap":{}},{"hash":"7f6db7d922b4753f8040b6451e3d0d77a6c4fce9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ac336d73a602347c456fc83469e963bb75cc35d","isMergeCommit":true,"messageTitle":"Merge pull request #42 from currynia/branch-update-dg","messageBody":"Update dg with use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"f6f4ad94f375a3bdc3eb31e9b68b124cac643289","isMergeCommit":false,"messageTitle":"Update placeholder text of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dfbbb7fb46dbcfa64020e1b317ce9afeb6651aa2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"e9c97943d36999a8b864ed38dd18e0dd2e62e9a3","isMergeCommit":false,"messageTitle":"Delete placeholder text in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"6638631bfb1d28789bc30c1bddabcb7aa7c66eb9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from SwaminathanViswa/branch-updateUserGuide","messageBody":"Update placeholder text of AB3","fileTypesAndContributionMap":{}},{"hash":"986772e9759b6742cc97fa81fac9fe3957f73a6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateCodeCovBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21f478be696a2053737ac18a59f089bbb0bd3a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bbe4e3d184ed0073e78c889476bb08f2db5a9a3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa9cfec774f302b7ff4dc329ae7c227473bfbe2","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Incogdino/branch-updateCodeCovBadge","messageBody":"Update CodeCov badge to point to team repo","fileTypesAndContributionMap":{}},{"hash":"1f8af4768cdffdb4e38f467baef56862890715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd3f8db807a052e8dc0bc05876fc325f279eeb5f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from SwaminathanViswa/branch-Update-README.md","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"b56d4b0a75bc63313c6e8ed8842efa8f3774262a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a29d736893089e62fdd3a25db4e1893687d2a9c1","isMergeCommit":true,"messageTitle":"Merge pull request #51 from SwaminathanViswa/branch-updatePlaceholders","messageBody":"Delete placeholder text in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bebca57b1ca54101cdc3a59083059b36466fba51","isMergeCommit":true,"messageTitle":"Merge pull request #54 from DesSnowy/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"746996a5007ee5670105a6699c32ad7a918c1ffd","isMergeCommit":false,"messageTitle":"Add Telegram as input and parse it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":16},"test-code":{"insertions":11,"deletions":9}}},{"hash":"d5be3a319cb51df1ba1b4092a556f456fd93dcfd","isMergeCommit":false,"messageTitle":"Edit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6},"test-code":{"insertions":21,"deletions":9}}},{"hash":"69a3db5c0aa05a16de01c6046da824d95e2dba83","isMergeCommit":false,"messageTitle":"Edit test cases to include telegram input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"test-code":{"insertions":94,"deletions":33}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a863c3558d32dc8d9739d364e9b47d0c532c01ba","isMergeCommit":false,"messageTitle":"Edit test cases to comply with coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"b8061add5510c2ed600b8a7971a254177389f050","isMergeCommit":false,"messageTitle":"Edit checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"f4b400deeaef6a172fcc72a057963bd5c8296a40","isMergeCommit":false,"messageTitle":"Add test cases to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":10}}},{"hash":"6fb0e5e9c2ca073b6001d6106af755c6226c7398","isMergeCommit":false,"messageTitle":"Edit checkstlye errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"1926af2f301aacacf893d5903ac32b1055b47aee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-TelegramInput","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"87eeb6f862a3d261920a471c062b189e4d952271","isMergeCommit":true,"messageTitle":"Merge pull request #58 from SwaminathanViswa/branch-update-TelegramInput","messageBody":"Add Telegram as input and parse it","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"89ef59bb23be226d03335bf8f8c20b16e2d560c8","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tohjh/branch-add-grades-UI","messageBody":"Add grades UI and storage","fileTypesAndContributionMap":{}}]}],"DesSnowy":[{"date":"2024-09-28","commitResults":[{"hash":"fdc501af4258c0db605e9a0a426be8eb3b166694","isMergeCommit":false,"messageTitle":"Add Xiang Yu\u0027s section on aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":4}}},{"hash":"815687676743b24260e3a117507548691a0fec7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8f99dc581a8a97313872177025eaec8b9f403da","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tohjh/branch-aboutUs","messageBody":"Update Jia Han\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"646c88da96080082b325eba5db4e4f5cf4dbdb44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b621e0fd5b28cba7c6d1c6b011d3a8e4cde3906","isMergeCommit":true,"messageTitle":"Merge pull request #23 from DesSnowy/branch-aboutUs","messageBody":"Update Xiang Yu\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"99f6ebb8b918874194132e12e53088481e597c63","isMergeCommit":false,"messageTitle":"Add acknowledgements for source code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2932fe7c1f8a556008834c87a24a717512775693","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SwaminathanViswa/branch-update-site-settings","messageBody":"Update title and repository name in yml file","fileTypesAndContributionMap":{}},{"hash":"e8d6300ffff64df4dcfbd9da5b357afc12a9e73f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f5a2b42b8df86ea6b93d812b939c71b4efe7161","isMergeCommit":false,"messageTitle":"Change title name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1077e9332c2e61779f9efb607bc920a3549434b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-acknowledgement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"340c6cc6d2d8970efc2b9b18cd718b2c578f06c4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from DesSnowy/branch-add-acknowledgement","messageBody":"Add Acknowledgement of original source code","fileTypesAndContributionMap":{}},{"hash":"9db0e582f9e77d8ec95a0e8bb07b638f009137ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"87c8d21853b0ae4d1aba13180f09bd6f8bb822de","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Incogdino/branch-updateGithubActionsBadge","messageBody":"Update Github Actions build status badge to reflect team repo badge","fileTypesAndContributionMap":{}},{"hash":"884695768fe56ec629ac5bda7cee96ae5405fc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDevGuideNonFunctionalRequirements","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48eee677f5a39b7df636789be2b2ec339e19ba63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c1094747dde2b700b0da8815fe957523e2e7d7fe","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Incogdino/branch-updateDevGuideNonFunctionalRequirements","messageBody":"Add non functional requirements for developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"14c2eebae5de050a70dad33d91f5e66608551866","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92350f62192d237e16f379e445228b147e625b51","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SwaminathanViswa/branch-editDeveloperGuide","messageBody":"Update User Stories section in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"29adfb0cbe89842ab5a3b508bb18be6e411c2018","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2831aefa974ca79dad345eb476f1fcda070d4fb4","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohjh/branch-AddGlossary","messageBody":"Add glossary to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"7d4a22d1013fc895ab1e1d5505d03dadc740a927","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into switch-docs-to-markbind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d1353c0c8912d0f9c7f29175b2b94aaaa8b3ce8f","isMergeCommit":false,"messageTitle":"Update site configs to use KonTActs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5acbb106010ece51beade098672ea070b5d8a03b","isMergeCommit":false,"messageTitle":"Clean up merge commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9c7d246e32bd2c9a0e00fc97ad480cdf1e6a1478","isMergeCommit":false,"messageTitle":"Fix TOC error in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"13142a8e2d938e46058559240c8b254c18225a77","isMergeCommit":false,"messageTitle":"Change delete to use name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":41,"deletions":25}}},{"hash":"2bc97d8d680740d1719f3a5f7ad879fef94a125d","isMergeCommit":false,"messageTitle":"Fix checkstlye for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"29f329ce851b82b89a65caaafb1288062dac6b3a","isMergeCommit":false,"messageTitle":"Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ecf6be476ed4b2b209b14148e63ff7e0b0085e8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7c878ea6460af0b850ce0154fc8a809a6489ee2","isMergeCommit":false,"messageTitle":"Add test case for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e3be61278a03e15470a7de42edb2dec263251495","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-updateDeleteForName\u0027 of github.com:DesSnowy/tp into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4edaac8e55c5426fc2806703b90e61a1e02f388f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a95f58b2e97f9136121ee74ac0aa0d01a825ed40","isMergeCommit":true,"messageTitle":"Merge pull request #61 from DesSnowy/branch-updateDeleteForName","messageBody":"Update delete command to reference NAME","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"a15bb98f3489fa0eb6d5fdf1d7189dfbcea72755","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Incogdino/branch-addGuiForGitHubField","messageBody":"Add GitHub field to UI","fileTypesAndContributionMap":{}}]}],"currynia":[{"date":"2024-09-28","commitResults":[{"hash":"cc1d41e596f695432e74711f0db7085ad1029bcf","isMergeCommit":false,"messageTitle":"Add Wen Rui\u0027s about","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":13}}},{"hash":"1d675ec283255f9e1770ec20339c1a617ae0f1b8","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9978b2bae22530cac46ba8808f2a06e5dbb880e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcf00ac86233b25e8333d5f10d1615032cee1c78","isMergeCommit":true,"messageTitle":"Merge pull request #21 from currynia/branch-update-AboutUs","messageBody":"Update Wen Rui\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"8790a0fe882bad320650489dc968db1a25464131","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Incogdino/branch-updateAboutUs","messageBody":"Update Javier\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"6965eb0bbdffddd0a2aa4d50ab378d815119d0ab","isMergeCommit":false,"messageTitle":"Update dg with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":370,"deletions":74}}}]},{"date":"2024-09-29","commitResults":[{"hash":"7839a77ed251afb8c36dfa2d2ccad365a89d2f6b","isMergeCommit":false,"messageTitle":"Update use cases format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":231,"deletions":212}}},{"hash":"00b15a222c11044999792a782c8769b439618edc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-update-dg\u0027 of https://github.com/currynia/tp into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58cf25015124784632a457b2f5a277698005eac3","isMergeCommit":false,"messageTitle":"Update readme (A4)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-07","commitResults":[{"hash":"bbb2a2d06a47b6822147f865d724bf67dd4e94d4","isMergeCommit":false,"messageTitle":"Add function to add grades","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":224,"deletions":43}}}]},{"date":"2024-10-09","commitResults":[{"hash":"c4a3c5b95ac00d62fc776c7257f8418f7381bee7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":23}}},{"hash":"f86aca7228310129303b5d4c2a5994d7313b0cf1","isMergeCommit":false,"messageTitle":"Fix PersonTest test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":13,"deletions":11}}},{"hash":"83925785d86fa6f60517d9cdf662048f4702509d","isMergeCommit":false,"messageTitle":"Update test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":61},"test-code":{"insertions":121,"deletions":4}}},{"hash":"4fa9e45c3be222fd969a5db1c171ba2594d66108","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"8f2acd9376af451b112e78fc6dbc988978528a92","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-AddGradeCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb06483a4ff9f0bcfd12518e524ab4127f2e879","isMergeCommit":false,"messageTitle":"Fix previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":12},"test-code":{"insertions":12,"deletions":12}}},{"hash":"ac9def93385cb1d4bd9f88266714b7fcc44a0721","isMergeCommit":true,"messageTitle":"Merge pull request #60 from currynia/branch-add-AddGradeCommand","messageBody":"Add input and parsing of adding grades","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"85ed9671b56b0366f42cff6b0d159e71a3e942c4","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":51,"deletions":26}}},{"hash":"b4ea03423a987f328ece7b8a202e2827d84ea1c2","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":31,"deletions":8}}},{"hash":"e24e9ed40572705137aa33e3c668be527ef4cf4a","isMergeCommit":false,"messageTitle":"Fix style from previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"c067faa105e7e6d74acad61f493cb81e552d1df6","isMergeCommit":false,"messageTitle":"Remove unused getters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]}],"Incogdino":[{"date":"2024-09-28","commitResults":[{"hash":"d2aa1bd4698f7f20a40c5bc37a789488ef77f0c0","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"031f6e189cff2b63ec90c447f9dbdd146cdeabaa","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2f2812422c429b980dafcbd084d1e9dbcbc7ae28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af497b7b9f90537ea690e1feb105b9cc0eaf1967","isMergeCommit":false,"messageTitle":"Add non functional requirements for developer guide","messageBody":"Non functional requirement specify what the system should do and\nthe constraints under which the system is developed and operated.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":5}}},{"hash":"b983d029f7afe4a690b8aeb9b0e752f6fe0e7401","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"52d6f41c0ffa0d6f11273d01090a29afc5b32e03","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"76553a037d79369e64997f87d1a8b496770c681f","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ecace2da7f60ac405739641a14e76f83b9709b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b261dc57c8cc208704db1bc7b61310087eb855e6","isMergeCommit":false,"messageTitle":"Add full stops to the end of non functional requirements sentences","messageBody":"Sentences previously lacked a full stop at the end of the sentence.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"ad0132191a9545a7d43ddb81d6f3c31f2c4ab7d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"0aa17b717b7dce1b965716b7e980a7c3b9e3a598","isMergeCommit":false,"messageTitle":"Update CodeCov badge to point to team repo","messageBody":"CodeCov badge was initially pointing to the address book repo. It have\nbeen updated to the project team repo.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-07","commitResults":[{"hash":"49fa56e56820790eedb2f28bd3aea687beabf507","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"f789f82665eac026dafd2853c561d80fbe14f969","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":20}}}]},{"date":"2024-10-09","commitResults":[{"hash":"02cd6991385377fd3daa61be400bbb760e8c06f8","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the Addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9},"test-code":{"insertions":95,"deletions":39}}},{"hash":"0657496a3871f8506ae1d91348e25a700cab72ef","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases helps to handle edge cases as well as to test if\nexceptions work as expected with the proper error message and error\nhandling.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"a613ffe7a246d97a015fa1d92b7d0b1c776c5258","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the equals method returns false if the two\npersons with different github accounts are compared with the method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"b78e74f9550b694fbf721dcb7d5abb6b37c5b220","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the JsonAdaptedPerson throws an error if the\ngithub person username is of the wrong format.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"488adf1c59ccc569d30ff2e1d28d75d9cb7dfa32","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Incogdino/branch-addGithubAccountFeature","messageBody":"Branch add GitHub account feature","fileTypesAndContributionMap":{}},{"hash":"2da415fec1f952209f8d9e8c6f11c434d307707d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"4caec0483b869bc2e2cb4bb6939500180ef60123","isMergeCommit":false,"messageTitle":"Add GitHub field to UI","messageBody":"GitHub account username was previously unviewable under the contact\ninside the AddressBook. It can now be retrieved and viewed as part\nof a contact information.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a14dbe50e115cf78a3c4df0dbfd2093af46462ea","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"08a0030c66010703f9e0069524de71872c23d341","isMergeCommit":false,"messageTitle":"Update success message for add command","messageBody":"Success message now includes details of GitHub username that is\nvisible to the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"cf9c903f54c1c7e231936773b5f991d7d3e56758","isMergeCommit":false,"messageTitle":"Update add command failure message","messageBody":"Failure message now includes details of how to specify the proper\nadd command feature with the GitHub field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"402a19f13e70372ff33748f18db939f9d5520d7e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"tohjh":[{"date":"2024-09-28","commitResults":[{"hash":"622659bb4c8ce6e258959065c9a97dc80396ad12","isMergeCommit":false,"messageTitle":"Add Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"509dd241e711fe5915ab284f2b35922261f9cbf7","isMergeCommit":false,"messageTitle":"Update Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1fdd5e1ccd721f5e6c3d997a86481602b182408b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03eef594cca5fb181f259d463d236a273676c201","isMergeCommit":false,"messageTitle":"Update README (A1)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7ed3f4f8dbe2e4a18aea274f9f15d957e1217dda","isMergeCommit":false,"messageTitle":"Add glossary to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}},{"hash":"fc74a21151de23c5bde0c51707d2f0f5c52f59e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9817927fc088ab65ce6551150f1c79f4efedb3d9","isMergeCommit":false,"messageTitle":"Add fullstops for glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"b89eec4f8ec4a7154e34be3c1681ac7ced70c46d","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"5e2b9451364cf63b32fcd1940df4afc60343ad89","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4dfd77d6d973c4ae51d57fb54487cf23e68038dd","isMergeCommit":true,"messageTitle":"Add fullstop for glossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"b10f0af28436df58b2eaaf4305ec2c763e8b4a4a","isMergeCommit":false,"messageTitle":"Add storage and UI display for assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":19}}}]},{"date":"2024-10-10","commitResults":[{"hash":"16bc38965cf4da64f3e64fe389ae096252729ebb","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"050eabb751a327ed98bcf4a6f7cc730b3e1e7f2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-grades-UI","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SwaminathanViswa":{"docs":93,"functional-code":142,"test-code":220},"DesSnowy":{"docs":32,"functional-code":31,"test-code":47},"currynia":{"docs":418,"functional-code":285,"test-code":212},"Incogdino":{"docs":28,"functional-code":142,"test-code":69},"tohjh":{"docs":12,"functional-code":29,"test-code":0}},"authorContributionVariance":{"SwaminathanViswa":6163.2124,"DesSnowy":711.46326,"currynia":29059.016,"Incogdino":2421.9316,"tohjh":465.00946},"authorDisplayNameMap":{"SwaminathanViswa":"CS2103T-T11-2 SWAM..ISWA","DesSnowy":"CS2103T-T11-2 LAU ..G YU","currynia":"CS2103T-T11-2 TEE .. RUI","Incogdino":"CS2103T-T11-2 JAVI.. WEE","tohjh":"CS2103T-T11-2 TOH .. HAN"}} +{"authorDailyContributionsMap":{"SwaminathanViswa":[{"date":"2024-09-21","commitResults":[{"hash":"59cc0ac4f3dc4927bbe1a47660696ac21b549078","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-28","commitResults":[{"hash":"6bdf2144b42f267d21d5d684cc8ca15723fc157a","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6222aabf5182eb25bca4f452470850219a9c109e","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"e10a952360859bb79ea9bd84183cacddc0d15a66","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9a331d8e27dce909d71a7ab1e556d7c77892219","isMergeCommit":true,"messageTitle":"Merge pull request #22 from SwaminathanViswa/branch-update-AboutUs-page","messageBody":"Update Viswa\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"18f9d47d026fabbfc01e64c044e11f46b5b0b3f2","isMergeCommit":false,"messageTitle":"Update title and repository name in yml file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"65925df8cdf91bb50064de1ce7a113850f7e008b","isMergeCommit":false,"messageTitle":"Update User Stories section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-09-29","commitResults":[{"hash":"ef82d2b33e03eb645da3463e64959f7d493d93ce","isMergeCommit":true,"messageTitle":"Merge pull request #44 from currynia/branch-update-readme","messageBody":"Update readme (A4)","fileTypesAndContributionMap":{}},{"hash":"7f6db7d922b4753f8040b6451e3d0d77a6c4fce9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ac336d73a602347c456fc83469e963bb75cc35d","isMergeCommit":true,"messageTitle":"Merge pull request #42 from currynia/branch-update-dg","messageBody":"Update dg with use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"f6f4ad94f375a3bdc3eb31e9b68b124cac643289","isMergeCommit":false,"messageTitle":"Update placeholder text of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dfbbb7fb46dbcfa64020e1b317ce9afeb6651aa2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"e9c97943d36999a8b864ed38dd18e0dd2e62e9a3","isMergeCommit":false,"messageTitle":"Delete placeholder text in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"6638631bfb1d28789bc30c1bddabcb7aa7c66eb9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from SwaminathanViswa/branch-updateUserGuide","messageBody":"Update placeholder text of AB3","fileTypesAndContributionMap":{}},{"hash":"986772e9759b6742cc97fa81fac9fe3957f73a6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateCodeCovBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21f478be696a2053737ac18a59f089bbb0bd3a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bbe4e3d184ed0073e78c889476bb08f2db5a9a3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa9cfec774f302b7ff4dc329ae7c227473bfbe2","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Incogdino/branch-updateCodeCovBadge","messageBody":"Update CodeCov badge to point to team repo","fileTypesAndContributionMap":{}},{"hash":"1f8af4768cdffdb4e38f467baef56862890715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd3f8db807a052e8dc0bc05876fc325f279eeb5f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from SwaminathanViswa/branch-Update-README.md","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"b56d4b0a75bc63313c6e8ed8842efa8f3774262a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a29d736893089e62fdd3a25db4e1893687d2a9c1","isMergeCommit":true,"messageTitle":"Merge pull request #51 from SwaminathanViswa/branch-updatePlaceholders","messageBody":"Delete placeholder text in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bebca57b1ca54101cdc3a59083059b36466fba51","isMergeCommit":true,"messageTitle":"Merge pull request #54 from DesSnowy/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"746996a5007ee5670105a6699c32ad7a918c1ffd","isMergeCommit":false,"messageTitle":"Add Telegram as input and parse it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":16},"test-code":{"insertions":11,"deletions":9}}},{"hash":"d5be3a319cb51df1ba1b4092a556f456fd93dcfd","isMergeCommit":false,"messageTitle":"Edit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6},"test-code":{"insertions":21,"deletions":9}}},{"hash":"69a3db5c0aa05a16de01c6046da824d95e2dba83","isMergeCommit":false,"messageTitle":"Edit test cases to include telegram input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"test-code":{"insertions":94,"deletions":33}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a863c3558d32dc8d9739d364e9b47d0c532c01ba","isMergeCommit":false,"messageTitle":"Edit test cases to comply with coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"b8061add5510c2ed600b8a7971a254177389f050","isMergeCommit":false,"messageTitle":"Edit checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"f4b400deeaef6a172fcc72a057963bd5c8296a40","isMergeCommit":false,"messageTitle":"Add test cases to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":10}}},{"hash":"6fb0e5e9c2ca073b6001d6106af755c6226c7398","isMergeCommit":false,"messageTitle":"Edit checkstlye errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"1926af2f301aacacf893d5903ac32b1055b47aee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-TelegramInput","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"87eeb6f862a3d261920a471c062b189e4d952271","isMergeCommit":true,"messageTitle":"Merge pull request #58 from SwaminathanViswa/branch-update-TelegramInput","messageBody":"Add Telegram as input and parse it","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"89ef59bb23be226d03335bf8f8c20b16e2d560c8","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tohjh/branch-add-grades-UI","messageBody":"Add grades UI and storage","fileTypesAndContributionMap":{}}]}],"DesSnowy":[{"date":"2024-09-28","commitResults":[{"hash":"fdc501af4258c0db605e9a0a426be8eb3b166694","isMergeCommit":false,"messageTitle":"Add Xiang Yu\u0027s section on aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":4}}},{"hash":"815687676743b24260e3a117507548691a0fec7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8f99dc581a8a97313872177025eaec8b9f403da","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tohjh/branch-aboutUs","messageBody":"Update Jia Han\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"646c88da96080082b325eba5db4e4f5cf4dbdb44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b621e0fd5b28cba7c6d1c6b011d3a8e4cde3906","isMergeCommit":true,"messageTitle":"Merge pull request #23 from DesSnowy/branch-aboutUs","messageBody":"Update Xiang Yu\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"99f6ebb8b918874194132e12e53088481e597c63","isMergeCommit":false,"messageTitle":"Add acknowledgements for source code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2932fe7c1f8a556008834c87a24a717512775693","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SwaminathanViswa/branch-update-site-settings","messageBody":"Update title and repository name in yml file","fileTypesAndContributionMap":{}},{"hash":"e8d6300ffff64df4dcfbd9da5b357afc12a9e73f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f5a2b42b8df86ea6b93d812b939c71b4efe7161","isMergeCommit":false,"messageTitle":"Change title name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1077e9332c2e61779f9efb607bc920a3549434b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-acknowledgement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"340c6cc6d2d8970efc2b9b18cd718b2c578f06c4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from DesSnowy/branch-add-acknowledgement","messageBody":"Add Acknowledgement of original source code","fileTypesAndContributionMap":{}},{"hash":"9db0e582f9e77d8ec95a0e8bb07b638f009137ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"87c8d21853b0ae4d1aba13180f09bd6f8bb822de","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Incogdino/branch-updateGithubActionsBadge","messageBody":"Update Github Actions build status badge to reflect team repo badge","fileTypesAndContributionMap":{}},{"hash":"884695768fe56ec629ac5bda7cee96ae5405fc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDevGuideNonFunctionalRequirements","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48eee677f5a39b7df636789be2b2ec339e19ba63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c1094747dde2b700b0da8815fe957523e2e7d7fe","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Incogdino/branch-updateDevGuideNonFunctionalRequirements","messageBody":"Add non functional requirements for developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"14c2eebae5de050a70dad33d91f5e66608551866","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92350f62192d237e16f379e445228b147e625b51","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SwaminathanViswa/branch-editDeveloperGuide","messageBody":"Update User Stories section in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"29adfb0cbe89842ab5a3b508bb18be6e411c2018","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2831aefa974ca79dad345eb476f1fcda070d4fb4","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohjh/branch-AddGlossary","messageBody":"Add glossary to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"7d4a22d1013fc895ab1e1d5505d03dadc740a927","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into switch-docs-to-markbind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d1353c0c8912d0f9c7f29175b2b94aaaa8b3ce8f","isMergeCommit":false,"messageTitle":"Update site configs to use KonTActs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5acbb106010ece51beade098672ea070b5d8a03b","isMergeCommit":false,"messageTitle":"Clean up merge commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9c7d246e32bd2c9a0e00fc97ad480cdf1e6a1478","isMergeCommit":false,"messageTitle":"Fix TOC error in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"13142a8e2d938e46058559240c8b254c18225a77","isMergeCommit":false,"messageTitle":"Change delete to use name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":41,"deletions":25}}},{"hash":"2bc97d8d680740d1719f3a5f7ad879fef94a125d","isMergeCommit":false,"messageTitle":"Fix checkstlye for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"29f329ce851b82b89a65caaafb1288062dac6b3a","isMergeCommit":false,"messageTitle":"Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ecf6be476ed4b2b209b14148e63ff7e0b0085e8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7c878ea6460af0b850ce0154fc8a809a6489ee2","isMergeCommit":false,"messageTitle":"Add test case for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e3be61278a03e15470a7de42edb2dec263251495","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-updateDeleteForName\u0027 of github.com:DesSnowy/tp into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4edaac8e55c5426fc2806703b90e61a1e02f388f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a95f58b2e97f9136121ee74ac0aa0d01a825ed40","isMergeCommit":true,"messageTitle":"Merge pull request #61 from DesSnowy/branch-updateDeleteForName","messageBody":"Update delete command to reference NAME","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"a15bb98f3489fa0eb6d5fdf1d7189dfbcea72755","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Incogdino/branch-addGuiForGitHubField","messageBody":"Add GitHub field to UI","fileTypesAndContributionMap":{}},{"hash":"da88aaeef78f08a2d4a752a7c8746ac256858397","isMergeCommit":false,"messageTitle":"Update message usage for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"5544838c16ee4590fa773e4a9b333c34c850f89c","isMergeCommit":false,"messageTitle":"Fix typo in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b159a5f529ce0a2da2c32e6f7008fb87749efcc9","isMergeCommit":false,"messageTitle":"Fix styling in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0cbd2dd74c8e3b9bddd5e435f032da6dc9fb1567","isMergeCommit":true,"messageTitle":"Merge pull request #74 from DesSnowy/branch-updateDeleteUi","messageBody":"Update usage text for DeleteCommand","fileTypesAndContributionMap":{}}]}],"currynia":[{"date":"2024-09-28","commitResults":[{"hash":"cc1d41e596f695432e74711f0db7085ad1029bcf","isMergeCommit":false,"messageTitle":"Add Wen Rui\u0027s about","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":13}}},{"hash":"1d675ec283255f9e1770ec20339c1a617ae0f1b8","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9978b2bae22530cac46ba8808f2a06e5dbb880e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcf00ac86233b25e8333d5f10d1615032cee1c78","isMergeCommit":true,"messageTitle":"Merge pull request #21 from currynia/branch-update-AboutUs","messageBody":"Update Wen Rui\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"8790a0fe882bad320650489dc968db1a25464131","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Incogdino/branch-updateAboutUs","messageBody":"Update Javier\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"6965eb0bbdffddd0a2aa4d50ab378d815119d0ab","isMergeCommit":false,"messageTitle":"Update dg with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":370,"deletions":74}}}]},{"date":"2024-09-29","commitResults":[{"hash":"7839a77ed251afb8c36dfa2d2ccad365a89d2f6b","isMergeCommit":false,"messageTitle":"Update use cases format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":231,"deletions":212}}},{"hash":"00b15a222c11044999792a782c8769b439618edc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-update-dg\u0027 of https://github.com/currynia/tp into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58cf25015124784632a457b2f5a277698005eac3","isMergeCommit":false,"messageTitle":"Update readme (A4)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-07","commitResults":[{"hash":"bbb2a2d06a47b6822147f865d724bf67dd4e94d4","isMergeCommit":false,"messageTitle":"Add function to add grades","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":224,"deletions":43}}}]},{"date":"2024-10-09","commitResults":[{"hash":"c4a3c5b95ac00d62fc776c7257f8418f7381bee7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":23}}},{"hash":"f86aca7228310129303b5d4c2a5994d7313b0cf1","isMergeCommit":false,"messageTitle":"Fix PersonTest test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":13,"deletions":11}}},{"hash":"83925785d86fa6f60517d9cdf662048f4702509d","isMergeCommit":false,"messageTitle":"Update test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":61},"test-code":{"insertions":121,"deletions":4}}},{"hash":"4fa9e45c3be222fd969a5db1c171ba2594d66108","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"8f2acd9376af451b112e78fc6dbc988978528a92","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-AddGradeCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb06483a4ff9f0bcfd12518e524ab4127f2e879","isMergeCommit":false,"messageTitle":"Fix previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":12},"test-code":{"insertions":12,"deletions":12}}},{"hash":"ac9def93385cb1d4bd9f88266714b7fcc44a0721","isMergeCommit":true,"messageTitle":"Merge pull request #60 from currynia/branch-add-AddGradeCommand","messageBody":"Add input and parsing of adding grades","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"85ed9671b56b0366f42cff6b0d159e71a3e942c4","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":51,"deletions":26}}},{"hash":"b4ea03423a987f328ece7b8a202e2827d84ea1c2","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":31,"deletions":8}}},{"hash":"e24e9ed40572705137aa33e3c668be527ef4cf4a","isMergeCommit":false,"messageTitle":"Fix style from previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"c067faa105e7e6d74acad61f493cb81e552d1df6","isMergeCommit":false,"messageTitle":"Remove unused getters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]}],"Incogdino":[{"date":"2024-09-28","commitResults":[{"hash":"d2aa1bd4698f7f20a40c5bc37a789488ef77f0c0","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"031f6e189cff2b63ec90c447f9dbdd146cdeabaa","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2f2812422c429b980dafcbd084d1e9dbcbc7ae28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af497b7b9f90537ea690e1feb105b9cc0eaf1967","isMergeCommit":false,"messageTitle":"Add non functional requirements for developer guide","messageBody":"Non functional requirement specify what the system should do and\nthe constraints under which the system is developed and operated.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":5}}},{"hash":"b983d029f7afe4a690b8aeb9b0e752f6fe0e7401","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"52d6f41c0ffa0d6f11273d01090a29afc5b32e03","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"76553a037d79369e64997f87d1a8b496770c681f","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ecace2da7f60ac405739641a14e76f83b9709b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b261dc57c8cc208704db1bc7b61310087eb855e6","isMergeCommit":false,"messageTitle":"Add full stops to the end of non functional requirements sentences","messageBody":"Sentences previously lacked a full stop at the end of the sentence.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"ad0132191a9545a7d43ddb81d6f3c31f2c4ab7d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"0aa17b717b7dce1b965716b7e980a7c3b9e3a598","isMergeCommit":false,"messageTitle":"Update CodeCov badge to point to team repo","messageBody":"CodeCov badge was initially pointing to the address book repo. It have\nbeen updated to the project team repo.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-07","commitResults":[{"hash":"49fa56e56820790eedb2f28bd3aea687beabf507","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"f789f82665eac026dafd2853c561d80fbe14f969","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":20}}}]},{"date":"2024-10-09","commitResults":[{"hash":"02cd6991385377fd3daa61be400bbb760e8c06f8","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the Addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9},"test-code":{"insertions":95,"deletions":39}}},{"hash":"0657496a3871f8506ae1d91348e25a700cab72ef","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases helps to handle edge cases as well as to test if\nexceptions work as expected with the proper error message and error\nhandling.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"a613ffe7a246d97a015fa1d92b7d0b1c776c5258","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the equals method returns false if the two\npersons with different github accounts are compared with the method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"b78e74f9550b694fbf721dcb7d5abb6b37c5b220","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the JsonAdaptedPerson throws an error if the\ngithub person username is of the wrong format.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"488adf1c59ccc569d30ff2e1d28d75d9cb7dfa32","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Incogdino/branch-addGithubAccountFeature","messageBody":"Branch add GitHub account feature","fileTypesAndContributionMap":{}},{"hash":"2da415fec1f952209f8d9e8c6f11c434d307707d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"4caec0483b869bc2e2cb4bb6939500180ef60123","isMergeCommit":false,"messageTitle":"Add GitHub field to UI","messageBody":"GitHub account username was previously unviewable under the contact\ninside the AddressBook. It can now be retrieved and viewed as part\nof a contact information.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a14dbe50e115cf78a3c4df0dbfd2093af46462ea","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"08a0030c66010703f9e0069524de71872c23d341","isMergeCommit":false,"messageTitle":"Update success message for add command","messageBody":"Success message now includes details of GitHub username that is\nvisible to the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"cf9c903f54c1c7e231936773b5f991d7d3e56758","isMergeCommit":false,"messageTitle":"Update add command failure message","messageBody":"Failure message now includes details of how to specify the proper\nadd command feature with the GitHub field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"402a19f13e70372ff33748f18db939f9d5520d7e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4621e6eae337533a30494648d55e196bd0857d31","isMergeCommit":false,"messageTitle":"Add tests for GitHub class","messageBody":"Comprehensive of GitHub class to ensure that the methods perform as\nexpected, correct errors are thrown.\n\nIn particular, the username regex needs to be changed to adhere to\nstrict naming conventions of username by GitHub.\n","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":0}}},{"hash":"8a85f37e062c7a20611c3b6862fa0693f5540b4a","isMergeCommit":false,"messageTitle":"Update validation regex for github class","messageBody":"The previous validation regex, did not account for several issues:\n1. Username allows for \u003e 39 characters\n2. Username allows starting with hyphens and ending with hyphens\n3. Username allows for consecutive hyphens\n4. Username allows for hyphens only\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":3}}},{"hash":"eb70b7cb762ad8f2a8ae4037d650bc518d6ec126","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addTestsForAddCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"94b9371a4723186a37c28648e5e9c8991aecfca7","isMergeCommit":false,"messageTitle":"Update code comments for java class","messageBody":"Comments for the java class better reflects the implementation of\nits methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3808628e81dfd403049460a6d7782909e674ff2f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addTestsForAddCommand\u0027 of https://github.com/Incogdino/tp into branch-addTestsForAddCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec38946c652ce3dbb85252aa0befa248e4e638e3","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Incogdino/branch-addTestsForAddCommand","messageBody":"Add tests for GitHub class","fileTypesAndContributionMap":{}}]}],"tohjh":[{"date":"2024-09-28","commitResults":[{"hash":"622659bb4c8ce6e258959065c9a97dc80396ad12","isMergeCommit":false,"messageTitle":"Add Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"509dd241e711fe5915ab284f2b35922261f9cbf7","isMergeCommit":false,"messageTitle":"Update Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1fdd5e1ccd721f5e6c3d997a86481602b182408b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03eef594cca5fb181f259d463d236a273676c201","isMergeCommit":false,"messageTitle":"Update README (A1)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7ed3f4f8dbe2e4a18aea274f9f15d957e1217dda","isMergeCommit":false,"messageTitle":"Add glossary to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}},{"hash":"fc74a21151de23c5bde0c51707d2f0f5c52f59e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9817927fc088ab65ce6551150f1c79f4efedb3d9","isMergeCommit":false,"messageTitle":"Add fullstops for glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"b89eec4f8ec4a7154e34be3c1681ac7ced70c46d","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"5e2b9451364cf63b32fcd1940df4afc60343ad89","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4dfd77d6d973c4ae51d57fb54487cf23e68038dd","isMergeCommit":true,"messageTitle":"Add fullstop for glossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"b10f0af28436df58b2eaaf4305ec2c763e8b4a4a","isMergeCommit":false,"messageTitle":"Add storage and UI display for assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":19}}}]},{"date":"2024-10-10","commitResults":[{"hash":"16bc38965cf4da64f3e64fe389ae096252729ebb","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"050eabb751a327ed98bcf4a6f7cc730b3e1e7f2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-grades-UI","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SwaminathanViswa":{"docs":93,"functional-code":142,"test-code":220},"DesSnowy":{"docs":32,"functional-code":37,"test-code":47},"currynia":{"docs":418,"functional-code":285,"test-code":212},"Incogdino":{"docs":28,"functional-code":142,"test-code":137},"tohjh":{"docs":12,"functional-code":29,"test-code":0}},"authorContributionVariance":{"SwaminathanViswa":6163.2124,"DesSnowy":709.6483,"currynia":29059.016,"Incogdino":2808.17,"tohjh":465.00946},"authorDisplayNameMap":{"SwaminathanViswa":"CS2103T-T11-2 SWAM..ISWA","DesSnowy":"CS2103T-T11-2 LAU ..G YU","currynia":"CS2103T-T11-2 TEE .. RUI","Incogdino":"CS2103T-T11-2 JAVI.. WEE","tohjh":"CS2103T-T11-2 TOH .. HAN"}} diff --git a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json index 0a9c1b9d..c2f69945 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid 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":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"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","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, new PropertyBook(), initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":22,"Virusrwj223":2,"-":184}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers) */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteunit\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(MESSAGE_DELETE_PROPERTY_SUCCESS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":74}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" * Represents the various types of entities that can be listed in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * This enum is used to specify the kind of records a property agent wishes to list,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * allowing for easy differentiation between different categories.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * \u003cp\u003ePossible values include:\u003c/p\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #BUYERS} - Represents buyers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #SELLERS} - Represents sellers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #CLIENTS} - Represents clients in the database, which includes both buyers and sellers.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #PROPERTIES} - Represents properties in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public static enum Key {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" BUYERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" SELLERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" CLIENTS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, buyers, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" + \"or clients in the database.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" //TODO modify this to actually show the correct thing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" private final Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" // TODO:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" // 1. Store the String key to keep track of the thing (actually can use enum as well honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" // 2. So your ListCommandParser will take the arguments and produce","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // 3. Have a boolean isInvalidKey or something as true, because if that\u0027s the case, then return nothing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, all you need to do it to fetch the correct String and then print the string out as pernormal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" // (just call their toString honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" // 2. Create a bunch of helper methods that aim to resolve this issue","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // 3. If there\u0027s an error, that is if the key doesn\u0027t exist or something, then gg throw error","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, parse as per usual!","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" public ListCommand(Key key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" switch (key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" case BUYERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" case SELLERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // Logic to list sellers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" case CLIENTS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" case PROPERTIES:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // Logic to list properties","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"Unexpected key: \" + key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, this.key.toString().toLowerCase()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":68,"-":20}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"apollo-tan":1,"thony-ui":6,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" ListCommand.Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" case \"buyers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.BUYERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case \"sellers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.SELLERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" case \"clients\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.CLIENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case \"properties\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // Return the appropriate ListCommand with the parsed key","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" return new ListCommand(key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"Virusrwj223":28,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client 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-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80,"Virusrwj223":37,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"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-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleProperties() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleProperties()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook 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-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":35,"-":77}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":23,"Virusrwj223":2,"apollo-tan":12,"-":155}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"Virusrwj223":27,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":59}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":12,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public void testEnumValues() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" assertEquals(4, ListCommand.Key.values().length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.BUYERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.SELLERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.CLIENTS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.PROPERTIES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" public void listCommandGeneration() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListCommand, \"The command should be an instance of ListCommand\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // TODO: Add more robust testing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.SELLERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.CLIENTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.PROPERTIES);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"apollo-tan"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"apollo-tan"},"content":" // showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":68,"-":32}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"apollo-tan":6,"thony-ui":19,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" // Test for valid postal code and unit number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420 \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(\"118420\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(\"08-08\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" // Test for invalid postal code format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"abc123\" + \" \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // Test for invalid unit number format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420\" + \" \" + PREFIX_UNITNUMBER + \"808\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":46}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"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","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78,"-":192}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Virusrwj223"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Virusrwj223"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":47,"Virusrwj223":27,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" // COMMENTED CODE IS FOR PERSON IMPLEMENTING DELETE FUNCTIONAILITY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.add(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.remove(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" // assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":176}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":52}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" for (Property person : getTypicalProperties()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" ab.addProperty(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":33}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid 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":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.PropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage \u003d new JsonPropertyBookStorage(userPrefs.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage, clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"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","isFullCredit":false},{"lineNumber":83,"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e propertyBookOptional;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook initialPropertyData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" propertyBookOptional \u003d storage.readPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" if (!propertyBookOptional.isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d propertyBookOptional.orElseGet(SampleDataUtil::getSamplePropertyBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" logger.warning(\"Data file at \" + storage.getPropertyBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" + \" Will be starting with an empty PropertyBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, initialPropertyData, initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":22,"-":184}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers) */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" storage.savePropertyBook(model.getPropertyBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" * Formats the {@code property} for display to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public static String format(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" builder.append(\"PostalCode: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getPostalCode())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .append(\"; Unit: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getUnit());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" return builder.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"Virusrwj223":13,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Adds a {@code Property} to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * Extends {@link AddPropertyCommand} and uses its functionality to add a specific type of property: {@code Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public static final String COMMAND_WORD \u003d \"addproperty\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_POSTALCODE + \"POSTALCODE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + \"UNIT \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This property already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private final Property toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" toAdd \u003d property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Executes the AddPropertyCommand.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Adds the property to the model if the property does not already exist in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @return A {@link CommandResult} with a success message if the property was added.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (model.hasProperty(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" model.addProperty(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof AddPropertyCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand otherAddCommand \u003d (AddPropertyCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteunit\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(MESSAGE_DELETE_PROPERTY_SUCCESS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":74}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" * Represents the various types of entities that can be listed in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * This enum is used to specify the kind of records a property agent wishes to list,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * allowing for easy differentiation between different categories.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * \u003cp\u003ePossible values include:\u003c/p\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #BUYERS} - Represents buyers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #SELLERS} - Represents sellers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #CLIENTS} - Represents clients in the database, which includes both buyers and sellers.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #PROPERTIES} - Represents properties in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public static enum Key {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" BUYERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" SELLERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" CLIENTS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, buyers, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" + \"or clients in the database.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" //TODO modify this to actually show the correct thing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" private final Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" // TODO:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" // 1. Store the String key to keep track of the thing (actually can use enum as well honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" // 2. So your ListCommandParser will take the arguments and produce","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // 3. Have a boolean isInvalidKey or something as true, because if that\u0027s the case, then return nothing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, all you need to do it to fetch the correct String and then print the string out as pernormal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" // (just call their toString honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" // 2. Create a bunch of helper methods that aim to resolve this issue","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // 3. If there\u0027s an error, that is if the key doesn\u0027t exist or something, then gg throw error","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, parse as per usual!","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" public ListCommand(Key key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" switch (key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" case BUYERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" case SELLERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // Logic to list sellers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" case CLIENTS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" case PROPERTIES:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // Logic to list properties","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"Unexpected key: \" + key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, this.key.toString().toLowerCase()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":68,"-":20}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Parses input arguments and creates a new {@link AddPropertyCommand} object.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * (postalCode, Unit) for creating a {@link Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParser implements Parser\u003cAddPropertyCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(postalCode, unit);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommand(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":51}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" case AddPropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"Virusrwj223":4,"apollo-tan":1,"thony-ui":6,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" ListCommand.Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" case \"buyers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.BUYERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case \"sellers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.SELLERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" case \"clients\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.CLIENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case \"properties\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // Return the appropriate ListCommand with the parsed key","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" return new ListCommand(key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"Virusrwj223":28,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client 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-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80,"Virusrwj223":37,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":15}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"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-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" public static Property[] getSampleProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return new Property[] {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123456\"), new Unit(\"11-11\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123457\"), new Unit(\"00-00\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" };","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public static ReadOnlyPropertyBook getSamplePropertyBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook sampleAb \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" for (Property sampleProperty : getSampleProperty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" sampleAb.addProperty(sampleProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" return sampleAb;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"Virusrwj223":20,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * Jackson-friendly version of {@link Property}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final String postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private final String unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonAdaptedProperty} with the given property details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(@JsonProperty(\"postalCode\") String postalCode, @JsonProperty(\"unit\") String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code Property} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(Property source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d source.getPostalCode().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d source.getUnit().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" * Converts this Jackson-friendly adapted property object into the model\u0027s {@code Property} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public Property toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" if (postalCode \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" if (!PostalCode.isValidPostalCode(postalCode)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" final PostalCode modelPostalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (unit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" if (!Unit.isValidUnit(unit)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" final Unit modelUnit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" return new Property(modelPostalCode, modelUnit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":61}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonPropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * A class to access PropertyBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorage implements PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private Path filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public JsonPropertyBookStorage(Path filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #readPropertyBook()}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cJsonSerializablePropertyBook\u003e jsonPropertyBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" filePath, JsonSerializablePropertyBook.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (!jsonPropertyBook.isPresent()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return Optional.of(jsonPropertyBook.get().toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #savePropertyBook(ReadOnlyPropertyBook)}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePropertyBook(propertyBook), filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * An Immutable PropertyBook that is serializable to JSON format.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"@JsonRootName(value \u003d \"propertybook\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerializablePropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"Properties list contains duplicate property(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final List\u003cJsonAdaptedProperty\u003e properties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonSerializablePropertyBook} with the given properties.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(@JsonProperty(\"properties\") List\u003cJsonAdaptedProperty\u003e properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" this.properties.addAll(properties);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code ReadOnlyPropertyBook} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(ReadOnlyPropertyBook source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" properties.addAll(source.getPropertyList().stream().map(JsonAdaptedProperty::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Converts this property book into the model\u0027s {@code PropertyBook} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" for (JsonAdaptedProperty jsonAdaptedProperty : properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d jsonAdaptedProperty.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (propertyBook.hasProperty(property)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":59}},{"path":"src/main/java/seedu/address/storage/PropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Represents a storage for {@link seedu.address.model.PropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public interface PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Returns AddressBook data as a {@link ReadOnlyPropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * @see #getPropertyBookFilePath()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Saves the given {@link ReadOnlyPropertyBook} to the storage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * @param propertyBook cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" * @see #savePropertyBook(ReadOnlyPropertyBook)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":44}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, PropertyBookStorage, ClientBookStorage {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":8,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private PropertyBookStorage propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage, ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookStorage \u003d propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":37,"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","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook 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-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" propertyBookStorage.savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook 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-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":29,"-":76}},{"path":"src/main/java/seedu/address/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"public class ClientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public final Client client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private Label phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private Label email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" this.client \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"path":"src/main/java/seedu/address/ui/ClientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ClientListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private ListView\u003cClient\u003e clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientListPanel(ObservableList\u003cClient\u003e clientList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" clientListView.setItems(clientList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" clientListView.setCellFactory(listView -\u003e new ClientListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" class ClientListViewCell extends ListCell\u003cClient\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" protected void updateItem(Client client, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super.updateItem(client, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" if (empty || client \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" setGraphic(new ClientCard(client, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public ListView\u003cClient\u003e getClientListView() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private ClientListPanel clientListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" private StackPane clientListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" clientListPanel \u003d new ClientListPanel(logic.getFilteredClientList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" clientListPanelPlaceholder.getChildren().add(clientListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" void handleExit() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8,"-":192}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33}},{"path":"src/main/resources/view/ClientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" \u003cListView fx:id\u003d\"clientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" \u003cStackPane fx:id\u003d\"clientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"-":59}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":13,"apollo-tan":12,"-":154}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" void formatProperty_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(new PostalCode(\"123456\"), new Unit(\"12-75\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" String result \u003d Messages.format(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d \"PostalCode: 123456; Unit: 12-75\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67,"Virusrwj223":16}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"Virusrwj223":27,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Property property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" private Model model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" @BeforeEach","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" void setUp() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" property \u003d mock(Property.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" model \u003d mock(Model.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyCommand(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(AddPropertyCommand.MESSAGE_SUCCESS, Messages.format(property));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" CommandResult result \u003d addPropertyCommand.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" verify(model).addProperty(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" void execute_duplicateProperty_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate property","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(true);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(CommandException.class, () -\u003e addPropertyCommand.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Property differentProperty \u003d mock(Property.class); // Different Seller instance","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(differentProperty);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, addPropertyCommand2);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":103}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_ADMIRALTY \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_BEDOK \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_ADMIRALTY \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_BEDOK \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_POSTALCODE_DESC \u003d \" \" + PREFIX_POSTALCODE + \"1234\"; //PostalCode with few numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_UNIT_DESC \u003d \" \" + PREFIX_UNITNUMBER + \"11 11\"; //\u0027-\u0027 delimiter missing","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"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","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":12,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":59}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"Virusrwj223":8,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public void testEnumValues() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" assertEquals(4, ListCommand.Key.values().length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.BUYERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.SELLERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.CLIENTS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.PROPERTIES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" public void listCommandGeneration() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListCommand, \"The command should be an instance of ListCommand\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // TODO: Add more robust testing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.SELLERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.CLIENTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.PROPERTIES);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"apollo-tan"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"apollo-tan"},"content":" // showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":68,"-":32}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParserTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private AddPropertyCommandParser parser \u003d new AddPropertyCommandParser();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertParseSuccess(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" new AddPropertyCommand(expectedProperty));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // missing PostalCode prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, UNIT_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // missing unit prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // invalid postal code","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, INVALID_POSTALCODE_DESC + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" // invalid unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + INVALID_UNIT_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessagePostalCode \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessageUnit \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" expectedMessagePostalCode);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" expectedMessageUnit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":74}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" public void parseCommand_addProperty() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand command \u003d (AddPropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + ADMIRALTY.getPostalCode() + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + ADMIRALTY.getUnit()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(new AddPropertyCommand(property), command);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":17,"apollo-tan":6,"thony-ui":19,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" // Test for valid postal code and unit number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420 \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(\"118420\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(\"08-08\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" // Test for invalid postal code format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"abc123\" + \" \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // Test for invalid unit number format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420\" + \" \" + PREFIX_UNITNUMBER + \"808\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":46}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"123 45\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d \"11-11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property PostalCode","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePostalCode((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePostalCode(INVALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(VALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Virusrwj223"},"content":" String postalCodeWithWhitespace \u003d WHITESPACE + VALID_POSTALCODE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(postalCodeWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property Unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUnit((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUnit(INVALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(VALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Virusrwj223"},"content":" String unitWithWhitespace \u003d WHITESPACE + VALID_UNIT + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(unitWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78,"Virusrwj223":54,"-":192}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Virusrwj223"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Virusrwj223"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":47,"Virusrwj223":27,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" // COMMENTED CODE IS FOR PERSON IMPLEMENTING DELETE FUNCTIONAILITY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.add(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.remove(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" // assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":176}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedPropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"12345\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"00 00\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d ADMIRALTY.getPostalCode().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d ADMIRALTY.getUnit().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_validPropertyDetails_returnsProperty() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(ADMIRALTY, property.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPostalCode_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(INVALID_POSTALCODE, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, INVALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(null, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PostalCode.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/storage/JsonPropertyBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorageTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPropertyBookStorageTest\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" @TempDir","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public Path testFolder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void readPropertyBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e readPropertyBook(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private java.util.Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(String filePath) throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new JsonPropertyBookStorage(Paths.get(filePath)).readPropertyBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" : null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(readPropertyBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPropertyBook(\"notJsonFormatPropertyBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Saves {@code propertyBook} at the specified {@code filePath}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" private void savePropertyBook(ReadOnlyPropertyBook addressBook, String filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .savePropertyBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e savePropertyBook(new PropertyBook(), null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"path":"src/test/java/seedu/address/storage/JsonSerialzablePropertyBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.TypicalProperty;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerialzablePropertyBookTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" \"JsonSerializablePropertyBookTest\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TYPICAL_PROPERTIES_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"typicalPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" private static final Path INVALID_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"invalidPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private static final Path DUPLICATE_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"duplicatePropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_typicalPropertiesFile_success() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PROPERTIES_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook typicalPersonsAddressBook \u003d TypicalProperty.getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(propertyBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePropertyBook.MESSAGE_DUPLICATE_PROPERTY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" public void propertyBookReadSave() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook original \u003d getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" storageManager.savePropertyBook(original);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook retrieved \u003d storageManager.readPropertyBook().get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(original, new PropertyBook(retrieved));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" public void getPropertyBookFilePath() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" assertNotNull(storageManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":27,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" SampleDataUtil.getSamplePropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" for (Property person : getTypicalProperties()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" ab.addProperty(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":33}}] diff --git a/AY2425S1-CS2103T-T16-2_tp_master/commits.json b/AY2425S1-CS2103T-T16-2_tp_master/commits.json index 93d3ba7a..23ac6390 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":54,"functional-code":1684,"test-code":1821,"other":2},"jolwnn":{"docs":17,"functional-code":156,"test-code":105},"Virusrwj223":{"docs":27,"functional-code":560,"test-code":568},"apollo-tan":{"docs":14,"functional-code":126,"test-code":86},"thony-ui":{"docs":47,"functional-code":253,"test-code":192,"other":9}},"authorContributionVariance":{"yongkheehou":201693.0,"jolwnn":4304.559,"Virusrwj223":26889.521,"apollo-tan":5292.3745,"thony-ui":12085.541},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} +{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}},{"hash":"1c5effac008f777302c7b67892b8380ed5e07b33","isMergeCommit":false,"messageTitle":"Add UI classes for addbuyer/ addseller","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":5},"other":{"insertions":19,"deletions":1},"test-code":{"insertions":179,"deletions":0}}},{"hash":"a7ae718a10758fd85ca599ec0e3f259e4eb69f7d","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bfd7f8f67988b1d538af631379e4f23baaebd6b7","isMergeCommit":false,"messageTitle":"Fix junit syntax","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":7,"deletions":6}}},{"hash":"4dfe9e0c2d7ff59b8960006558fd54d96c4583c2","isMergeCommit":false,"messageTitle":"Remove GUI testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":21},"test-code":{"insertions":0,"deletions":179}}},{"hash":"ab68dd3ca74c0ad993683161c5bbd37de61e664a","isMergeCommit":false,"messageTitle":"Wrap client book with constructor in edit cmd test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"f190b2a61cd71efd8a52832a5e302989f7584a45","isMergeCommit":true,"messageTitle":"Merge pull request #79 from yongkheehou/small-fix-to-tests","messageBody":"Wrap client book with constructor in edit cmd test","fileTypesAndContributionMap":{}},{"hash":"66015818877c983f0159d440e1bf1c0e9b11b998","isMergeCommit":false,"messageTitle":"Small Fix to SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"14f31c38302e18d6eaa2a5f54e5d520245102c70","isMergeCommit":true,"messageTitle":"Merge pull request #78 from yongkheehou/add-ui-classes-for-addbuyer-seller-commands-2","messageBody":"Add UI classes for addbuyer/ addseller [2]","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}},{"hash":"ef7952fcba29f8de19fdb0d9fcad0eee71722456","isMergeCommit":false,"messageTitle":"Set up storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":14},"test-code":{"insertions":116,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}},{"hash":"3cc103723c74214def7872a7701635bfc07b7e78","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"bd33699a9efb55ab56d0988e4c16cc626213bb3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4df90c54a030894eef7965ed2a9fa6f6fff9958e","isMergeCommit":false,"messageTitle":"Update refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":1}}},{"hash":"579f6e74ba44bc3242b2d1b02ffdbc1c5e4e2620","isMergeCommit":false,"messageTitle":"Test storage manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"2733e3abfc382ee31979da3bd4da88b81f8bedd4","isMergeCommit":false,"messageTitle":"Test JsonSerializablePropertyBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":0}}},{"hash":"101efb459c1038ad21dd1844994edd370b5fda16","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":6}}},{"hash":"722018c694f62ff021ca948885b17343ef9f7d57","isMergeCommit":true,"messageTitle":"Merge pull request #12 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"916bb8c3bd6b685b0b8ab441b2b146fa737a29a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36345df42d66bd9809dc1b2baedbd29876420e0d","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"17f49c07c51841208134bc6df7b570d21fa8b26a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Virusrwj223/storage","messageBody":"Setup Storage","fileTypesAndContributionMap":{}},{"hash":"da393e61d0242880ad0b3b8b45623f5e07124268","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"883c5ea2c64028a9148e80d8af0582e6838a648f","isMergeCommit":false,"messageTitle":"Update logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"28c2d6cda7ddacd482bb1741fe64bdfb64b8fe67","isMergeCommit":false,"messageTitle":"Add addPropertyCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":0}}},{"hash":"fa68a287c03dea3dffca208b4944742368b5953e","isMergeCommit":false,"messageTitle":"Add parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"357353d6eaed7b94e49ed60329fef543426acc81","isMergeCommit":false,"messageTitle":"Test logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":272,"deletions":0}}},{"hash":"2a85336df464d5112bc274611417903732298e40","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Virusrwj223/Logic","messageBody":"Add Property logic","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":54,"functional-code":1836,"test-code":1823,"other":2},"jolwnn":{"docs":17,"functional-code":156,"test-code":105},"Virusrwj223":{"docs":27,"functional-code":1028,"test-code":1043},"apollo-tan":{"docs":14,"functional-code":126,"test-code":86},"thony-ui":{"docs":47,"functional-code":253,"test-code":192,"other":9}},"authorContributionVariance":{"yongkheehou":274370.28,"jolwnn":4137.1597,"Virusrwj223":64209.39,"apollo-tan":5084.9844,"thony-ui":11629.204},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} diff --git a/AY2425S1-CS2103T-W10-2_tp_master/authorship.json b/AY2425S1-CS2103T-W10-2_tp_master/authorship.json index d431a77e..58328360 100644 --- a/AY2425S1-CS2103T-W10-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W10-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":".github/ISSUE_TEMPLATE/bug_report.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Bug Report","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Report an issue to help us improve the project","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Bug\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the bug**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Provide a clear and concise description of the bug.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Steps to Reproduce**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"List the steps to reproduce the issue:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"1. Go to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"2. Click on \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"3. Scroll to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"4. See the error","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"**Expected behavior**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"Describe what you expected to happen instead.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":"**Screenshots**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"If applicable, include screenshots to illustrate the problem.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"Provide any other relevant context here.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":27}},{"path":".github/ISSUE_TEMPLATE/feature_request.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Feature Request","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Suggest a new feature or improvement","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Enhancement\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the solution you\u0027d like**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Explain the change or new feature you want to see.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"Include any additional details or screenshots to support your suggestion.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":".github/ISSUE_TEMPLATE/user_story.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: User Story","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Describe a feature or functionality from the user\u0027s perspective","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: [\"type.Story\", \"type.Epic\"]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**...so that** [benefit].","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"- Include any other relevant information or screenshots.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** is **a project done by Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"## What is DocTrack?","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"* DocTrack helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"* It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"## More about it","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * For user and developer documentation**, head over to **[DocTrack Documentation](https://ay2425s1-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"rxchell":12,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"You can reach us at our individual emails below!","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":"### Vangmay Sachan","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"\u003cimg src\u003d\"images/vangmay.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/vangmay)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/vangmay.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Quality Assurance","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"### Muhammad ZAIDAN bin Sani","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"\u003cimg src\u003d\"images/zaidansani.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":"[[github](https://github.com/zaidansani)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":"[[email](mailto:zaidan@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":"[[portfolio](team/zaidansani.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"* Roles: Team Lead, Developer, Integration","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"### Jae Choi","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":"\u003cimg src\u003d\"images/choiwab.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"[[github](http://github.com/choiwab)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/choiwab.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Code quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Storage","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":"### Rachel Tai","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":"\u003cimg src\u003d\"images/rxchell.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":"[[github](https://github.com/rxchell)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":"[[portfolio](team/rxchell.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"* Responsibilities: Commons","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"### Jo An","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"\u003cimg src\u003d\"images/jayjay19630.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/jayjay19630)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"[[email](mailto:jo.an@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/jayjay19630.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Deliverables and Deadlines, Scheduling and Tracking","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":16,"rxchell":5,"choiwab":2,"zaidansani":6,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"rxchell"},"content":"* General Practitioners (GPs) at small clinics","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"rxchell"},"content":"**Value proposition**: Time spent looking through paper medical documents should be spent in other life-saving activities. Our product resolves this issue by creating fast access to patient contact details as well as their relevant appointment/treatment details, allowing GPs to contact and monitor their patients easily.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"rxchell"},"content":"|----------|----------------------|----------------------------------------------------|----------------------------------------------------------------------|","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | add appointments | find them in the future for reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | schedule a new patient appointment | ensure that the patient is properly booked for consultation |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | remove an appointment that is no longer needed | free up time slots for other patients and avoid scheduling conflicts |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | view all upcoming appointments for better planning | organize my day effectively and ensure no appointments are missed |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | manage patient contact information | easily communicate with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | update patient details | maintain accurate records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | get details on a specific patient\u0027s appointments | keep track of the patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | store all patients information | retrieve them in the future |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"rxchell"},"content":"| `* * *` | nurse | track appointments | get ready to serve patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | access appointment history | understand patient visit patterns |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | categorize patients by conditions or treatments | easily track patient groups |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find free slots in the appointments | find gaps for appointments or holidays |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | get details on appointments for the day | keep track of the day\u0027s appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | shift appointments to a different time | change appointments based on holidays, etc. |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | schedule follow-up appointments | keep track of patients\u0027 appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | add mood status to appointment details | keep track of patient health each time we meet |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | sort patients by closest future appointment date | see which patient to see next |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find duplicate errors within the system | not have erroneous appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | organize appointments | arrange my schedule accordingly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | set holidays/free days | disallow appointments during certain dates |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | categorise patients based on certain factors | easily track patients with certain statuses |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | add list of allergies for a certain patient | not prescribe them stuff that will kill them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | view patient\u0027s medical history | make informed treatment decisions |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | access test results for patients | review and discuss results with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | set reminders for specific patient actions | ensure follow-up on important tasks |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve medical certificates of patients | gather patient information quickly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | record the medications given to patients | keep track of personal medication records of patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | search for patient files by name or ID | quickly retrieve specific records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | check prescription assigned by the doctor | print out prescription for patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | search up medicine to prescribe | give prescription to patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add notes to patient files | reference them during future visits |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | change the time frame for receiving reminders | receive reminders more frequently or less frequently |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add guardian/parental contacts to patient | contact patient indirectly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | update patient status | keep track of patient\u0027s condition |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | copy treatments | duplicate medication plans for similar patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | receive reminders on upcoming appointments | prepare for them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve specific treatment information | treat them appropriately |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | generate an automated document for a patient | give it to them as reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"jayjay19630"},"content":"(For all use cases below, the **System** is the `DocTrack` application and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific patient in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new patient details are invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find appointments for a specific patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"jayjay19630"},"content":"3. User requests to list appoinments for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows a list of appointments for that patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"jayjay19630"},"content":"**Use case: Add an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"jayjay19630"},"content":"3. User requests to add an appoinment for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack adds appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"jayjay19630"},"content":"**Use case: Duplicate an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"jayjay19630"},"content":"3. User requests to duplicate a specific appointment in the list on a new date.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack duplicates appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific appointment in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new details are invalid (i.e. wrongly formatted).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find patient for a specific appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"jayjay19630"},"content":"3. User requests to find patient for a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows patient details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"zaidansani"},"content":"2. Should work on any _reasonable system_ with good performance: common operation such as retrieving patient data must complete within 1 second, and complex operations must complete within 3 seconds.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":543,"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","isFullCredit":false},{"lineNumber":544,"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","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"zaidansani"},"content":"4. Should not require installation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"zaidansani"},"content":"5. Must not operate with dependency on any remote server","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"zaidansani"},"content":"6. No usage of DBMS","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"zaidansani"},"content":"7. Main product file must not exceed 100MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"zaidansani"},"content":"8. Documentation must not exceed 15MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"zaidansani"},"content":"9. Product should be designed for typing-preferred consumers, offering a CLI experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"zaidansani"},"content":"10. Product should be designed for a single user.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"zaidansani"},"content":"11. Product must function correctly on _standard resolutions_ and support scaling of 100%, 125%, 150%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"zaidansani"},"content":"12. Data must be persistent, with all changes saved immediately to local storage","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"zaidansani"},"content":"13. Data files must be in a format that can be edited manually by advanced users","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"zaidansani"},"content":"14. Data file must remain usable and intact even with invalid input from the application","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"zaidansani"},"content":"15. Errors must trigger clear, user-friendly messages","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"zaidansani"},"content":"* **Reasonable system**: A system with an OS matching the criteria above, with parts with a release date maximum 10 years from the current date","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"zaidansani"},"content":"* **Standard resolutions**: 1920x1080 and 1080x720","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"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","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"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","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":602,"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","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"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","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":41,"jayjay19630":156,"zaidansani":15,"-":406}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"**DocTrack is a desktop application for general practitioners (GPs) to quickly access patient contact ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"details, appointments, and treatment records.** While it has a GUI, most of the user ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* If you are interested in using DocTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":"* If you are interested about developing DocTrack, the [**Developer Guide**](DeveloperGuide.html) is a good ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" place to start.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false}],"authorContributionMap":{"rxchell":9,"-":15}},{"path":"docs/team/choiwab.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":" title: \"Jae\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":4,"choiwab":8}},{"path":"docs/team/jayjay19630.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Jo An\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":12}},{"path":"docs/team/rxchell.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":" title: \"Rachel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"rxchell":12}},{"path":"docs/team/vangmay.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":" title: \"Vangmay\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":2,"-":7}},{"path":"docs/team/zaidansani.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Zaidan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static String formatPerson(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Adds an entity (person or appointment) to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public abstract class AddCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \": Adds an entity (person or appointment) to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" person \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" if (alreadyExists(model)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getDuplicateEntityMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" addEntity(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * Checks if the entity being added to model already exists.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" protected abstract boolean alreadyExists(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" protected abstract void addEntity(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" * Returns the message to display when there is a duplicate.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getDuplicateEntityMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":32,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommand extends AddCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" \" + \"person\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" + \": Adds a person to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" private final Person toAdd;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Creates an AddPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" public AddPersonCommand(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected boolean alreadyExists(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return model.hasPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected void addEntity(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" protected String getDuplicateEntityMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AddPersonCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand otherAddPersonCommand \u003d (AddPersonCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" return toAdd.equals(otherAddPersonCommand.toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":95}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" * Clears the model - person, or appointment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"public abstract class ClearCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_USAGE \u003d \"clear person OR clear appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" clearEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" * Clears a specified model.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" protected abstract void clearEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zaidansani":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ClearPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":" * Clears the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"public class ClearPersonCommand extends ClearCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" protected void clearEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":23}},{"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":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Deletes an entity identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public abstract class DeleteCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" + \": Deletes the entity identified by the index number used in the displayed list.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param targetIndex Index of entity to be deleted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" Object entityToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" deleteEntity(model, entityToDelete);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(entityToDelete)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Deletes the entity from the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" protected abstract void deleteEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * Returns the success message to display upon deleting entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":38,"-":32}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"public class DeletePersonCommand extends DeleteCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" super(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" protected void deleteEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" model.deletePerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand otherDeletePersonCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zaidansani"},"content":" return targetIndex.equals(otherDeletePersonCommand.targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":28,"zaidansani":4,"-":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":241}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":" * Finds and lists all persons or appointments in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":"public abstract class FindCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" + \": Finds all persons or appointments whose names contain any of \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" protected final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" findEntity(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return new CommandResult(getSuccessMessage(model));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Vangmay"},"content":" * Finds the person/appointment from the list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Vangmay"},"content":" protected abstract void findEntity(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding all persons or appointments matching the query.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Vangmay"},"content":" * @return Success message","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Vangmay"},"content":" protected abstract String getSuccessMessage(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"Vangmay":20,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vangmay"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vangmay"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vangmay"},"content":" * Finds the person from the list of patients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"public class FindPersonCommand extends FindCommand {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Person has been found\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":" public FindPersonCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":" super(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" * Finds all persons with names matching the predicate in the address book to the user.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Vangmay"},"content":" * @param model {@code Model} which the FindPersonCommand should operate on.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Vangmay"},"content":" * */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" protected void findEntity(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" model.updateFilteredPersonList(this.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding the person.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" * @return the message to be displayed after finding all persons.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" public String getSuccessMessage(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vangmay"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Vangmay":35}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons or appointments in the address book to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_USAGE \u003d \"list person OR list appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" listEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" * Lists everything in the model (person or appointment).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" protected abstract void listEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons or appointments.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ListPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public class ListPersonCommand extends ListCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book to the user.*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" * @param model {@code Model} which the ListPersonCommand should operate on.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" protected void listEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" * @return the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":32}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d argMultimap.getEntityType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return new AddPersonCommand(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return AddAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":14,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zaidansani"},"content":" return new ClearCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"rxchell"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":1,"zaidansani":2,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" public String getEntityType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" return getPreamble().split(\" \")[0];","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ClearCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":" * Parses input arguments and creates a new ClearCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":"public class ClearCommandParser implements Parser\u003cClearCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":" * Parses the given {@code String} of arguments in the context of the ClearCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" * and returns a ClearCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" public ClearCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" return new ClearPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" //TODO: Instantiate and return ClearAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zaidansani"},"content":" ClearCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":35}},{"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":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return DeleteAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"-":23}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" * @param args user input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" * @return findCommand object for execution","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vangmay"},"content":" String entityType \u003d nameKeywords[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vangmay"},"content":" if (nameKeywords.length \u003d\u003d 0) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Vangmay"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" return new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Vangmay"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Vangmay"},"content":" //TODO: Instantiate and return FindAppointmentCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Vangmay"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Vangmay":21,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * Parses the given {@code String} of arguments for ListCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" * @param args user input","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" * @return ListCommand object for execution","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" * @throws ParseException if the user input does not follow the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" return new ListPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" //TODO: Instantiate and return ListAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":" public static final String APPOINTMENT_ENTITY_STRING \u003d \"appt\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Vangmay":2,"-":124}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" // Static counter to track the number of persons","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" private static int personIDCounter \u003d 0;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" // Unique person ID","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" private final int personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":" // Increment the static counter and assign a unique ID to the person","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"rxchell"},"content":" this.personId \u003d ++personIDCounter;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" return personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":13,"-":117}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zaidansani"},"content":" String deleteCommand \u003d \"delete person 9\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"rxchell"},"content":" String listCommand \u003d ListPersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(listCommand, ListPersonCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jayjay19630":2,"rxchell":3,"zaidansani":1,"-":170}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"public class AddPersonCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" @BeforeEach","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" public void resetCounter() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" // Use reflection to reset the personIDCounter","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" Field personIdCounterField \u003d Person.class.getDeclaredField(\"personIDCounter\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setAccessible(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" // Reset counter to 0 before each test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setInt(null, 0);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" // Verify personId increments correctly","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"rxchell"},"content":" assertEquals(1, validPerson.getPersonId());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" assertCommandSuccess(new AddPersonCommand(validPerson), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" assertCommandFailure(new AddPersonCommand(personInList), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"rxchell":18,"jayjay19630":4,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPersonCommand(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" CommandResult commandResult \u003d new AddPersonCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" assertEquals(String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(validPerson);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addPersonCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommand \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addBobCommand \u003d new AddPersonCommand(bob);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommandCopy \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(ALICE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" String expected \u003d AddPersonCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" assertEquals(expected, addPersonCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13,"-":192}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"zaidansani":2,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_APPOINTMENT_STRING \u003d \"appt \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteSecondCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zaidansani"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zaidansani"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":2,"zaidansani":17,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zaidansani"},"content":" assertFalse(standardCommand.equals(new ClearPersonCommand()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":8,"zaidansani":1,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommand \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" FindCommand findSecondCommand \u003d new FindPersonCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommandCopy \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Vangmay"},"content":" FindPersonCommand findCommand \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Vangmay"},"content":" String expected \u003d FindPersonCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Vangmay":7,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"rxchell":4,"-":37}},{"path":"src/test/java/seedu/address/logic/parser/AddPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" // whitespace before person entity string in preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + PERSON_ENTITY_STRING + NAME_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" PREAMBLE_NON_EMPTY + PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"jayjay19630":57,"-":159}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" public void parseCommand_addPerson() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand command \u003d (AddPersonCommand) parser.parseCommand(PersonUtil.getAddPersonCommand(person));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" assertEquals(new AddPersonCommand(person), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zaidansani"},"content":" public void parseCommand_clearPersonCommand() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zaidansani"},"content":" \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zaidansani"},"content":" /* ToDo: Make this work","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zaidansani"},"content":" \" \" + ParserUtil.PERSON_ENTITY_STRING + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand command \u003d (DeletePersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" DeletePersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zaidansani"},"content":" assertEquals(new DeletePersonCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zaidansani"},"content":" // assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Vangmay"},"content":" FindCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + \"foo bar baz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Vangmay"},"content":" assertEquals(new FindPersonCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"rxchell"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"rxchell"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"rxchell"},"content":" // TODO: assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":6,"rxchell":3,"zaidansani":13,"-":84}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PERSON_ENTITY_STRING + \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":3,"-":30}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":4,"-":31}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static String getAddPersonCommand(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" return AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":60}}] +[{"path":".github/ISSUE_TEMPLATE/bug_report.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Bug Report","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Report an issue to help us improve the project","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Bug\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the bug**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Provide a clear and concise description of the bug.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Steps to Reproduce**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"List the steps to reproduce the issue:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"1. Go to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"2. Click on \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"3. Scroll to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"4. See the error","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"**Expected behavior**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"Describe what you expected to happen instead.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":"**Screenshots**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"If applicable, include screenshots to illustrate the problem.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"Provide any other relevant context here.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":27}},{"path":".github/ISSUE_TEMPLATE/feature_request.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Feature Request","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Suggest a new feature or improvement","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Enhancement\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the solution you\u0027d like**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Explain the change or new feature you want to see.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"Include any additional details or screenshots to support your suggestion.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":".github/ISSUE_TEMPLATE/user_story.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: User Story","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Describe a feature or functionality from the user\u0027s perspective","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: [\"type.Story\", \"type.Epic\"]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**...so that** [benefit].","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"- Include any other relevant information or screenshots.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** is **a project done by Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"## What is DocTrack?","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"* DocTrack helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"* It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"## More about it","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * For user and developer documentation**, head over to **[DocTrack Documentation](https://ay2425s1-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"rxchell":12,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"You can reach us at our individual emails below!","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":"### Vangmay Sachan","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"\u003cimg src\u003d\"images/vangmay.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/vangmay)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/vangmay.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Quality Assurance","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"### Muhammad ZAIDAN bin Sani","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"\u003cimg src\u003d\"images/zaidansani.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":"[[github](https://github.com/zaidansani)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":"[[email](mailto:zaidan@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":"[[portfolio](team/zaidansani.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"* Roles: Team Lead, Developer, Integration","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"### Jae Choi","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":"\u003cimg src\u003d\"images/choiwab.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"[[github](http://github.com/choiwab)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/choiwab.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Code quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Storage","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":"### Rachel Tai","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":"\u003cimg src\u003d\"images/rxchell.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":"[[github](https://github.com/rxchell)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":"[[portfolio](team/rxchell.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"* Responsibilities: Commons","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"### Jo An","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"\u003cimg src\u003d\"images/jayjay19630.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/jayjay19630)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"[[email](mailto:jo.an@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/jayjay19630.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Deliverables and Deadlines, Scheduling and Tracking","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":16,"rxchell":5,"choiwab":2,"zaidansani":6,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"rxchell"},"content":"* General Practitioners (GPs) at small clinics","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"rxchell"},"content":"**Value proposition**: Time spent looking through paper medical documents should be spent in other life-saving activities. Our product resolves this issue by creating fast access to patient contact details as well as their relevant appointment/treatment details, allowing GPs to contact and monitor their patients easily.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"rxchell"},"content":"|----------|----------------------|----------------------------------------------------|----------------------------------------------------------------------|","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | add appointments | find them in the future for reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | schedule a new patient appointment | ensure that the patient is properly booked for consultation |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | remove an appointment that is no longer needed | free up time slots for other patients and avoid scheduling conflicts |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | view all upcoming appointments for better planning | organize my day effectively and ensure no appointments are missed |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | manage patient contact information | easily communicate with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | update patient details | maintain accurate records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | get details on a specific patient\u0027s appointments | keep track of the patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | store all patients information | retrieve them in the future |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"rxchell"},"content":"| `* * *` | nurse | track appointments | get ready to serve patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | access appointment history | understand patient visit patterns |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | categorize patients by conditions or treatments | easily track patient groups |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find free slots in the appointments | find gaps for appointments or holidays |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | get details on appointments for the day | keep track of the day\u0027s appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | shift appointments to a different time | change appointments based on holidays, etc. |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | schedule follow-up appointments | keep track of patients\u0027 appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | add mood status to appointment details | keep track of patient health each time we meet |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | sort patients by closest future appointment date | see which patient to see next |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find duplicate errors within the system | not have erroneous appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | organize appointments | arrange my schedule accordingly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | set holidays/free days | disallow appointments during certain dates |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | categorise patients based on certain factors | easily track patients with certain statuses |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | add list of allergies for a certain patient | not prescribe them stuff that will kill them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | view patient\u0027s medical history | make informed treatment decisions |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | access test results for patients | review and discuss results with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | set reminders for specific patient actions | ensure follow-up on important tasks |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve medical certificates of patients | gather patient information quickly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | record the medications given to patients | keep track of personal medication records of patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | search for patient files by name or ID | quickly retrieve specific records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | check prescription assigned by the doctor | print out prescription for patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | search up medicine to prescribe | give prescription to patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add notes to patient files | reference them during future visits |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | change the time frame for receiving reminders | receive reminders more frequently or less frequently |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add guardian/parental contacts to patient | contact patient indirectly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | update patient status | keep track of patient\u0027s condition |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | copy treatments | duplicate medication plans for similar patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | receive reminders on upcoming appointments | prepare for them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve specific treatment information | treat them appropriately |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | generate an automated document for a patient | give it to them as reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"jayjay19630"},"content":"(For all use cases below, the **System** is the `DocTrack` application and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific patient in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new patient details are invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find appointments for a specific patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"jayjay19630"},"content":"3. User requests to list appoinments for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows a list of appointments for that patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"jayjay19630"},"content":"**Use case: Add an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"jayjay19630"},"content":"3. User requests to add an appoinment for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack adds appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"jayjay19630"},"content":"**Use case: Duplicate an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"jayjay19630"},"content":"3. User requests to duplicate a specific appointment in the list on a new date.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack duplicates appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific appointment in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new details are invalid (i.e. wrongly formatted).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find patient for a specific appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"jayjay19630"},"content":"3. User requests to find patient for a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows patient details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"zaidansani"},"content":"2. Should work on any _reasonable system_ with good performance: common operation such as retrieving patient data must complete within 1 second, and complex operations must complete within 3 seconds.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":543,"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","isFullCredit":false},{"lineNumber":544,"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","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"zaidansani"},"content":"4. Should not require installation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"zaidansani"},"content":"5. Must not operate with dependency on any remote server","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"zaidansani"},"content":"6. No usage of DBMS","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"zaidansani"},"content":"7. Main product file must not exceed 100MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"zaidansani"},"content":"8. Documentation must not exceed 15MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"zaidansani"},"content":"9. Product should be designed for typing-preferred consumers, offering a CLI experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"zaidansani"},"content":"10. Product should be designed for a single user.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"zaidansani"},"content":"11. Product must function correctly on _standard resolutions_ and support scaling of 100%, 125%, 150%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"zaidansani"},"content":"12. Data must be persistent, with all changes saved immediately to local storage","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"zaidansani"},"content":"13. Data files must be in a format that can be edited manually by advanced users","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"zaidansani"},"content":"14. Data file must remain usable and intact even with invalid input from the application","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"zaidansani"},"content":"15. Errors must trigger clear, user-friendly messages","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"zaidansani"},"content":"* **Reasonable system**: A system with an OS matching the criteria above, with parts with a release date maximum 10 years from the current date","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"zaidansani"},"content":"* **Standard resolutions**: 1920x1080 and 1080x720","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"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","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"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","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":602,"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","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"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","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":41,"jayjay19630":156,"zaidansani":15,"-":406}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"**DocTrack is a desktop application for general practitioners (GPs) to quickly access patient contact ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"details, appointments, and treatment records.** While it has a GUI, most of the user ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* If you are interested in using DocTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":"* If you are interested about developing DocTrack, the [**Developer Guide**](DeveloperGuide.html) is a good ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" place to start.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false}],"authorContributionMap":{"rxchell":9,"-":15}},{"path":"docs/team/choiwab.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":" title: \"Jae\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":4,"choiwab":8}},{"path":"docs/team/jayjay19630.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Jo An\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":12}},{"path":"docs/team/rxchell.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":" title: \"Rachel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"rxchell":12}},{"path":"docs/team/vangmay.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":" title: \"Vangmay\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":2,"-":7}},{"path":"docs/team/zaidansani.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Zaidan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.ReadOnlyAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAddressBook initialPersonsData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook initialAppointmentData \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" initialPersonsData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" initialPersonsData \u003d new AddressBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" //TODO: Read appointment book and add data to model manager here.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" return new ModelManager(initialPersonsData, initialAppointmentData, userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":181}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static String formatPerson(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Adds an entity (person or appointment) to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public abstract class AddCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \": Adds an entity (person or appointment) to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" person \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" if (alreadyExists(model)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getDuplicateEntityMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" addEntity(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * Checks if the entity being added to model already exists.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" protected abstract boolean alreadyExists(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" protected abstract void addEntity(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" * Returns the message to display when there is a duplicate.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getDuplicateEntityMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":32,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommand extends AddCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" \" + \"person\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" + \": Adds a person to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" private final Person toAdd;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Creates an AddPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" public AddPersonCommand(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected boolean alreadyExists(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return model.hasPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected void addEntity(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" protected String getDuplicateEntityMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AddPersonCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand otherAddPersonCommand \u003d (AddPersonCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" return toAdd.equals(otherAddPersonCommand.toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":95}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" * Clears the model - person, or appointment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"public abstract class ClearCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_USAGE \u003d \"clear person OR clear appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" clearEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" * Clears a specified model.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" protected abstract void clearEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zaidansani":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ClearPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":" * Clears the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"public class ClearPersonCommand extends ClearCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" protected void clearEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":23}},{"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":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Deletes an entity identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public abstract class DeleteCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" + \": Deletes the entity identified by the index number used in the displayed list.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param targetIndex Index of entity to be deleted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" Object entityToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" deleteEntity(model, entityToDelete);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(entityToDelete)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Deletes the entity from the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" protected abstract void deleteEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * Returns the success message to display upon deleting entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":38,"-":32}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"public class DeletePersonCommand extends DeleteCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" super(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" protected void deleteEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" model.deletePerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand otherDeletePersonCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zaidansani"},"content":" return targetIndex.equals(otherDeletePersonCommand.targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":28,"zaidansani":4,"-":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":" * Edits the details of an existing entity (person or appointment) in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"public abstract class EditCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":" + \": Edits the details of an entity (person or appointment) identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"choiwab"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"choiwab"},"content":" + \"INDEX\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"choiwab"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"choiwab"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" protected final EditEntityDescriptor editEntityDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" * @param targetIndex Index of entity to be edited.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":" public EditCommand(Index targetIndex, EditEntityDescriptor editEntityDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" requireNonNull(editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" this.editEntityDescriptor \u003d editEntityDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"choiwab"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"choiwab"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" Object entityToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" Object editedEntity \u003d createEditedEntity(model, entityToEdit, editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" if (isSameEntity(model, editedEntity, entityToEdit) \u0026\u0026 hasEntity(model, editedEntity)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"choiwab"},"content":" throw new CommandException(getDuplicateMessage());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"choiwab"},"content":" editEntity(model, editedEntity, entityToEdit);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"choiwab"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(editedEntity)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":" * Checks if entity already exists in list","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":" protected abstract boolean hasEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"choiwab"},"content":" * Checks if entity to edit is the same as edited entity","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"choiwab"},"content":" protected abstract boolean isSameEntity(Model model, Object editedEntity, Object entityToEdit)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":" throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"choiwab"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"choiwab"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"choiwab"},"content":" * Edits Entity","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"choiwab"},"content":" protected abstract void editEntity(Model model, Object editedEntity, Object entityToEdit) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"choiwab"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" protected abstract Object createEditedEntity(Model model, Object entityToEdit,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"choiwab"},"content":" EditEntityDescriptor editEntityDescriptor) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"choiwab"},"content":" * Returns duplicate message to display upon adding entity.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" protected abstract String getDuplicateMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"choiwab"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"choiwab"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"choiwab"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"choiwab"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"choiwab"},"content":" return targetIndex.equals(otherEditCommand.targetIndex)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 editEntityDescriptor.equals(otherEditCommand.editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"choiwab"},"content":" * Abstract descriptor for editing entities.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"choiwab"},"content":" public abstract static class EditEntityDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"choiwab"},"content":" // This class can have common fields or methods for all entities.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"choiwab"},"content":" public EditEntityDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"choiwab"},"content":" public EditEntityDescriptor(EditEntityDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"choiwab"},"content":" // Copy logic for common fields, if any, can go here.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" public abstract boolean equals(Object other);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"choiwab":68,"-":95}},{"path":"src/main/java/seedu/address/logic/commands/EditPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"choiwab"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"choiwab"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"choiwab"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"choiwab"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommand extends EditCommand {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"choiwab"},"content":" * Creates an EditPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"choiwab"},"content":" public EditPersonCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"choiwab"},"content":" protected boolean hasEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"choiwab"},"content":" return model.hasPerson((Person) entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" protected boolean isSameEntity(Model model, Object editedEntity, Object entityToEdit)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"choiwab"},"content":" throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"choiwab"},"content":" Person entityToEditCasted \u003d (Person) entityToEdit;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" return !(entityToEditCasted.isSamePerson((Person) editedEntity));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"choiwab"},"content":" protected void editEntity(Model model, Object editedPerson, Object personToEdit) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"choiwab"},"content":" model.setPerson((Person) personToEdit, (Person) editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"choiwab"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"choiwab"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" protected Object createEditedEntity(Model model, Object personToEdit,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"choiwab"},"content":" EditEntityDescriptor editPersonDescriptor) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"choiwab"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" EditPersonDescriptor editPersonDescriptorCasted \u003d (EditPersonDescriptor) editPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"choiwab"},"content":" Person personToEditCasted \u003d (Person) personToEdit;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"choiwab"},"content":" Name updatedName \u003d editPersonDescriptorCasted.getName().orElse(personToEditCasted.getName());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"choiwab"},"content":" Phone updatedPhone \u003d editPersonDescriptorCasted.getPhone().orElse(personToEditCasted.getPhone());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"choiwab"},"content":" Email updatedEmail \u003d editPersonDescriptorCasted.getEmail().orElse(personToEditCasted.getEmail());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"choiwab"},"content":" Address updatedAddress \u003d editPersonDescriptorCasted.getAddress().orElse(personToEditCasted.getAddress());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"choiwab"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptorCasted.getTags().orElse(personToEditCasted.getTags());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"choiwab"},"content":" return MESSAGE_EDIT_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"choiwab"},"content":" protected String getDuplicateMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"choiwab"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"choiwab"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"choiwab"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"choiwab"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"choiwab"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"choiwab"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"choiwab"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"choiwab"},"content":" .add(\"index\", targetIndex)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"choiwab"},"content":" .add(\"editPersonDescriptor\", editEntityDescriptor)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"choiwab"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"choiwab"},"content":" public static class EditPersonDescriptor extends EditCommand.EditEntityDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" private Name name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"choiwab"},"content":" private Phone phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"choiwab"},"content":" private Email email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"choiwab"},"content":" private Address address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"choiwab"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"choiwab"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"choiwab"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"choiwab"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"choiwab"},"content":" super(toCopy);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"choiwab"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"choiwab"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"choiwab"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"choiwab"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"choiwab"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"choiwab"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"choiwab"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"choiwab"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"choiwab"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"choiwab"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"choiwab"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"choiwab"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"choiwab"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"choiwab"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"choiwab"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"choiwab"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"choiwab"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"choiwab"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"choiwab"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"choiwab"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"choiwab"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"choiwab"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"choiwab"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"choiwab"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"choiwab"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"choiwab"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"choiwab"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"choiwab"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"choiwab"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"choiwab"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"choiwab"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"choiwab"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"choiwab"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"choiwab"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"choiwab"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"choiwab"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"choiwab"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"choiwab"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"choiwab"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"choiwab"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"choiwab"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"choiwab"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"choiwab"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"choiwab"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"choiwab"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"choiwab":222}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":" * Finds and lists all persons or appointments in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":"public abstract class FindCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" + \": Finds all persons or appointments whose names contain any of \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" protected final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" findEntity(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return new CommandResult(getSuccessMessage(model));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Vangmay"},"content":" * Finds the person/appointment from the list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Vangmay"},"content":" protected abstract void findEntity(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding all persons or appointments matching the query.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Vangmay"},"content":" * @return Success message","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Vangmay"},"content":" protected abstract String getSuccessMessage(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"Vangmay":20,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vangmay"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vangmay"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vangmay"},"content":" * Finds the person from the list of patients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"public class FindPersonCommand extends FindCommand {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Person has been found\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":" public FindPersonCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":" super(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" * Finds all persons with names matching the predicate in the address book to the user.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Vangmay"},"content":" * @param model {@code Model} which the FindPersonCommand should operate on.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Vangmay"},"content":" * */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" protected void findEntity(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" model.updateFilteredPersonList(this.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding the person.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" * @return the message to be displayed after finding all persons.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" public String getSuccessMessage(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vangmay"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Vangmay":35}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons or appointments in the address book to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_USAGE \u003d \"list person OR list appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" listEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" * Lists everything in the model (person or appointment).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" protected abstract void listEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons or appointments.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ListPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public class ListPersonCommand extends ListCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book to the user.*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" * @param model {@code Model} which the ListPersonCommand should operate on.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" protected void listEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" * @return the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":32}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d argMultimap.getEntityType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return new AddPersonCommand(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return AddAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":14,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zaidansani"},"content":" return new ClearCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"rxchell"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":1,"zaidansani":2,"-":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" public String getEntityType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" return getPreamble().split(\" \")[0];","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ClearCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":" * Parses input arguments and creates a new ClearCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":"public class ClearCommandParser implements Parser\u003cClearCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":" * Parses the given {@code String} of arguments in the context of the ClearCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" * and returns a ClearCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" public ClearCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" return new ClearPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" //TODO: Instantiate and return ClearAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zaidansani"},"content":" ClearCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_APPOINTMENT_TYPE \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_MEDICINE \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_SICKNESS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":15}},{"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":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return DeleteAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"choiwab"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"choiwab"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"choiwab"},"content":" if (splitArgs.length \u003c 3) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"choiwab"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"choiwab"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" EditPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"choiwab"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":" return new EditPersonCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":" //TODO","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"choiwab"},"content":" default:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"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","isFullCredit":false},{"lineNumber":93,"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"choiwab"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"choiwab":36,"-":78}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" * @param args user input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" * @return findCommand object for execution","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vangmay"},"content":" String entityType \u003d nameKeywords[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vangmay"},"content":" if (nameKeywords.length \u003d\u003d 0) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Vangmay"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" return new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Vangmay"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Vangmay"},"content":" //TODO: Instantiate and return FindAppointmentCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Vangmay"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Vangmay":21,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * Parses the given {@code String} of arguments for ListCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" * @param args user input","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" * @return ListCommand object for execution","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" * @throws ParseException if the user input does not follow the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" return new ListPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" //TODO: Instantiate and return ListAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":" public static final String APPOINTMENT_ENTITY_STRING \u003d \"appt\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Vangmay":2,"-":124}},{"path":"src/main/java/seedu/address/model/AppointmentBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.UniqueAppointmentList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" * Wraps all data at the appointment-book level","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Duplicates are not allowed (by .isSameAppointment comparison)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBook implements ReadOnlyAppointmentBook {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" private final UniqueAppointmentList appointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" appointments \u003d new UniqueAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Creates an AppointmentBook using the Appointments in the {@code toBeCopied}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook(ReadOnlyAppointmentBook toBeCopied) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" this();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" * Replaces the contents of the appointment list with {@code appointments}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" this.appointments.setAppointments(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Resets the existing data of this {@code AppointmentBook} with {@code newData}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" public void resetData(ReadOnlyAppointmentBook newData) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" setAppointments(newData.getAppointmentList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" //// appointment-level operations","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" return appointments.contains(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" * Adds an appointment to the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" * The appointment must not already exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" * Replaces the given appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as another","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" * existing appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" appointments.setAppointment(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Removes {@code key} from this {@code AppointmentBook}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" * {@code key} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" public void removeAppointment(Appointment key) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" appointments.remove(key);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" //// util methods","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointments\", appointments)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" return appointments.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AppointmentBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" AppointmentBook otherAppointmentBook \u003d (AppointmentBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" return appointments.equals(otherAppointmentBook.appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" return appointments.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":131}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" Predicate\u003cAppointment\u003e PREDICATE_SHOW_ALL_APPOINTMENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Replaces appointment book data with the data in {@code appointmentBook}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" /** Returns the AppointmentBook */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook getAppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" boolean hasAppointment(Appointment appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" * Deletes the given appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" * The appointment must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" void deleteAppointment(Appointment target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" * Adds the given appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" * {@code appointment} must not already exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" * Replaces the given appointment {@code target} with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" * another existing appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" void setAppointment(Appointment target, Appointment editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" /** Returns an unmodifiable view of the filtered appointment list */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" * Updates the filter of the filtered appointment list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"jayjay19630":44,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" private final AppointmentBook appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" private final FilteredList\u003cAppointment\u003e filteredAppointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" public ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAddressBook addressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook appointmentBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(addressBook, appointmentBook, userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" logger.fine(\"Initializing with address book: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" + addressBook","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" + \", with appointment book: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" + appointmentBook","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" + \" and user prefs \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" + userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook \u003d new AppointmentBook(appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" filteredAppointments \u003d new FilteredList\u003c\u003e(this.appointmentBook.getAppointmentList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" this(new AddressBook(), new AppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"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","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AppointmentBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" public void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook.resetData(appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" public ReadOnlyAppointmentBook getAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook.hasAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.removeAppointment(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jayjay19630"},"content":" updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.setAppointment(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"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","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jayjay19630"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Appointment 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","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" * Returns an unmodifiable view of the list of {@code Appointment} backed by the internal list of","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jayjay19630"},"content":" * {@code versionedAppointmentBook}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"jayjay19630"},"content":" return filteredAppointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jayjay19630"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jayjay19630"},"content":" filteredAppointments.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 appointmentBook.equals(otherModelManager.appointmentBook)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 filteredAppointments.equals(otherModelManager.filteredAppointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":75,"-":142}},{"path":"src/main/java/seedu/address/model/ReadOnlyAppointmentBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Unmodifiable view of an appointment book","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"public interface ReadOnlyAppointmentBook {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Returns an unmodifiable view of the appointments list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" * This list will not contain any duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" ObservableList\u003cAppointment\u003e getAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":17}},{"path":"src/main/java/seedu/address/model/appointment/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public class Appointment {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" // Identity fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" private final AppointmentType appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" private final LocalDateTime appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" private final int personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" // Data fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" private final Sickness sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" private final Medicine medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public Appointment(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" AppointmentType appointmentType,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" LocalDateTime appointmentDateTime,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" int personId,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" Sickness sickness,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" Medicine medicine) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(appointmentType, personId, sickness, medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" this.appointmentType \u003d appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" this.appointmentDateTime \u003d appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" this.personId \u003d personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" this.sickness \u003d sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" this.medicine \u003d medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" public AppointmentType getAppointmentType() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" return appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" public Sickness getSickness() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" return sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" public LocalDateTime getAppointmentDateTime() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" return appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" public Medicine getMedicine() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" return medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" * Returns true if both appointments have the same name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * This defines a weaker notion of equality between two appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" public boolean isSameAppointment(Appointment otherAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" if (otherAppointment \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" return otherAppointment !\u003d null","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getAppointmentType().equals(getAppointmentType())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getPersonId() \u003d\u003d getPersonId()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getAppointmentDateTime() \u003d\u003d getAppointmentDateTime();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Appointment)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" Appointment otherAppointment \u003d (Appointment) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" return appointmentType.equals(otherAppointment.appointmentType)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 appointmentDateTime \u003d\u003d otherAppointment.appointmentDateTime","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 personId \u003d\u003d otherAppointment.personId","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 medicine.equals(otherAppointment.medicine)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 sickness.equals(otherAppointment.sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" return Objects.hash(appointmentType, appointmentDateTime, personId, medicine, sickness);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointmentType\", appointmentType)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointmentDateTime\", appointmentDateTime)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" .add(\"personId\", personId)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" .add(\"medicine\", medicine)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" .add(\"sickness\", sickness)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":117}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents the type of an Appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentType(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentType {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" \"Appointment types can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * The first character of the appointment type must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code AppointmentType}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" * @param appointmentType A valid appointmentType.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public AppointmentType(String appointmentType) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointmentType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidAppointmentType(appointmentType), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" value \u003d appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid appointment type.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidAppointmentType(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AppointmentType)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" AppointmentType otherAppointmentType \u003d (AppointmentType) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherAppointmentType.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":67}},{"path":"src/main/java/seedu/address/model/appointment/Medicine.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents an Appointment-related medicine in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMedicine(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class Medicine {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Medicines can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" * The first character of the medicine must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code Medicine}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param medicine A valid medicine.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public Medicine(String medicine) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidMedicine(medicine), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" value \u003d medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidMedicine(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Medicine)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" Medicine otherMedicine \u003d (Medicine) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherMedicine.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":66}},{"path":"src/main/java/seedu/address/model/appointment/Sickness.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents an Appointment-related sickness in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSickness(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class Sickness {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sicknesses can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" * The first character of the sickness must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code Sickness}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param sickness A valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public Sickness(String sickness) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidSickness(sickness), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" value \u003d sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidSickness(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Sickness)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" Sickness otherSickness \u003d (Sickness) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherSickness.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":66}},{"path":"src/main/java/seedu/address/model/appointment/UniqueAppointmentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.exceptions.AppointmentNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.exceptions.DuplicateAppointmentException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * A list of appointments that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" * An appointment is considered unique by comparing using {@code Appointment#isSameAppointment(Appointment)}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" * As such, adding and updating of appointments uses Appointment#isSameAppointment(Appointment) for equality so as","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" * to ensure that the appointment being added or updated isunique in terms of identity in the UniqueAppointmentList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" * However, the removal of an appointment uses Appointment#equals(Object) so as to ensure that the appointment with","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" * exactly the same fields will be removed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @see Appointment#isSameAppointment(Appointment)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"public class UniqueAppointmentList implements Iterable\u003cAppointment\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" private final ObservableList\u003cAppointment\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" private final ObservableList\u003cAppointment\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if the list contains an equivalent appointment as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public boolean contains(Appointment toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" return internalList.stream().anyMatch(toCheck::isSameAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Adds an appointment to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" * The appointment must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" public void add(Appointment toAdd) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" * Replaces the appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" * The appointmnet identity of {@code editedAppointment} must not be the same as another","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * existing appointment in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" if (!target.isSameAppointment(editedAppointment) \u0026\u0026 contains(editedAppointment)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" internalList.set(index, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" * Removes the equivalent appointment from the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" * The appointment must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" public void remove(Appointment toRemove) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(UniqueAppointmentList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Replaces the contents of this list with {@code appointments}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" if (!appointmentsAreUnique(appointments)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" internalList.setAll(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" public Iterator\u003cAppointment\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof UniqueAppointmentList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" UniqueAppointmentList otherUniqueAppointmentList \u003d (UniqueAppointmentList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" return internalList.equals(otherUniqueAppointmentList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" * Returns true if {@code appointments} contains only unique appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jayjay19630"},"content":" private boolean appointmentsAreUnique(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jayjay19630"},"content":" for (int i \u003d 0; i \u003c appointments.size() - 1; i++) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jayjay19630"},"content":" for (int j \u003d i + 1; j \u003c appointments.size(); j++) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jayjay19630"},"content":" if (appointments.get(i).isSameAppointment(appointments.get(j))) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":153}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":" * Signals that the operation is unable to find the specified appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":6}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":" * Signals that the operation will result in duplicate Appointments","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":" * (Appointments are considered duplicates if they have the same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"public class DuplicateAppointmentException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" public DuplicateAppointmentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" super(\"Operation would result in duplicate appointments\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" // Static counter to track the number of persons","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" private static int personIDCounter \u003d 0;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" // Unique person ID","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" private final int personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":" // Increment the static counter and assign a unique ID to the person","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"rxchell"},"content":" this.personId \u003d ++personIDCounter;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" return personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":13,"-":117}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zaidansani"},"content":" String deleteCommand \u003d \"delete person 9\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"rxchell"},"content":" String listCommand \u003d ListPersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(listCommand, ListPersonCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"rxchell":3,"zaidansani":1,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"public class AddPersonCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" @BeforeEach","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" public void resetCounter() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" // Use reflection to reset the personIDCounter","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":" Field personIdCounterField \u003d Person.class.getDeclaredField(\"personIDCounter\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setAccessible(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" // Reset counter to 0 before each test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setInt(null, 0);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"rxchell"},"content":" // Verify personId increments correctly","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"rxchell"},"content":" assertEquals(1, validPerson.getPersonId());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" assertCommandSuccess(new AddPersonCommand(validPerson), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" assertCommandFailure(new AddPersonCommand(personInList), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"rxchell":16,"jayjay19630":7,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.ReadOnlyAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPersonCommand(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" CommandResult commandResult \u003d new AddPersonCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" assertEquals(String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(validPerson);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addPersonCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommand \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addBobCommand \u003d new AddPersonCommand(bob);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommandCopy \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(ALICE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" String expected \u003d AddPersonCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" assertEquals(expected, addPersonCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jayjay19630"},"content":" public void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" public ReadOnlyAppointmentBook getAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jayjay19630"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"jayjay19630"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":55,"-":192}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":2,"-":28}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_TYPE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICINE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SICKNESS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_APPOINTMENT_STRING \u003d \"appt \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"choiwab"},"content":" public static final EditPersonCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" public static final EditPersonCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_APPOINTMENT_TYPE_AMY \u003d \"Health Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_APPOINTMENT_TYPE_BOB \u003d \"Dental Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_MEDICINE_AMY \u003d \"Panadol\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_MEDICINE_BOB \u003d \"Ibuprofen\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_SICKNESS_AMY \u003d \"Flu\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_SICKNESS_BOB \u003d \"Toothache\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public static final String APPOINTMENT_TYPE_DESC_AMY \u003d \" \" + PREFIX_APPOINTMENT_TYPE + VALID_APPOINTMENT_TYPE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" public static final String APPOINTMENT_TYPE_DESC_BOB \u003d \" \" + PREFIX_APPOINTMENT_TYPE + VALID_APPOINTMENT_TYPE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" public static final String MEDICINE_DESC_AMY \u003d \" \" + PREFIX_MEDICINE + VALID_MEDICINE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" public static final String MEDICINE_DESC_BOB \u003d \" \" + PREFIX_MEDICINE + VALID_MEDICINE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" public static final String SICKNESS_DESC_AMY \u003d \" \" + PREFIX_SICKNESS + VALID_SICKNESS_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public static final String SICKNESS_DESC_BOB \u003d \" \" + PREFIX_SICKNESS + VALID_SICKNESS_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"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","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":20,"choiwab":2,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteSecondCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zaidansani"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zaidansani"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"zaidansani":17,"-":98}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" EditCommand editPersonCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" assertCommandSuccess(editPersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"choiwab"},"content":" final EditCommand standardCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"choiwab"},"content":" EditCommand commandWithSameValues \u003d new EditPersonCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zaidansani"},"content":" assertFalse(standardCommand.equals(new ClearPersonCommand()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"choiwab"},"content":" assertFalse(standardCommand.equals(new EditPersonCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"choiwab"},"content":" assertFalse(standardCommand.equals(new EditPersonCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"choiwab"},"content":" EditPersonCommand editPersonCommand \u003d new EditPersonCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"choiwab"},"content":" String expected \u003d EditPersonCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"choiwab"},"content":" assertEquals(expected, editPersonCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"choiwab":18,"zaidansani":1,"-":156}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"choiwab":1,"-":70}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" getTypicalAddressBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" private Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" getTypicalAddressBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommand \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" FindCommand findSecondCommand \u003d new FindPersonCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommandCopy \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Vangmay"},"content":" FindPersonCommand findCommand \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Vangmay"},"content":" String expected \u003d FindPersonCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Vangmay":7,"jayjay19630":9,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"rxchell":4,"-":35}},{"path":"src/test/java/seedu/address/logic/parser/AddPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" // whitespace before person entity string in preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + PERSON_ENTITY_STRING + NAME_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" PREAMBLE_NON_EMPTY + PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"jayjay19630":57,"-":159}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" public void parseCommand_addPerson() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand command \u003d (AddPersonCommand) parser.parseCommand(PersonUtil.getAddPersonCommand(person));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" assertEquals(new AddPersonCommand(person), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zaidansani"},"content":" public void parseCommand_clearPersonCommand() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zaidansani"},"content":" \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zaidansani"},"content":" /* ToDo: Make this work","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zaidansani"},"content":" \" \" + ParserUtil.PERSON_ENTITY_STRING + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand command \u003d (DeletePersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" DeletePersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zaidansani"},"content":" assertEquals(new DeletePersonCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" public void parseCommand_editPerson() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" EditPersonCommand command \u003d (EditPersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" EditPersonCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"choiwab"},"content":" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"choiwab"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" assertEquals(new EditPersonCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zaidansani"},"content":" // assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Vangmay"},"content":" FindCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + \"foo bar baz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Vangmay"},"content":" assertEquals(new FindPersonCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"rxchell"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"rxchell"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"rxchell"},"content":" // TODO: assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":6,"rxchell":3,"choiwab":8,"zaidansani":13,"-":78}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PERSON_ENTITY_STRING + \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":3,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"choiwab"},"content":" String userInput \u003d PERSON_ENTITY_STRING + targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" EditCommand expectedCommand \u003d new EditPersonCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"choiwab":10,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":4,"-":31}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" public void equals_checkAddressBooks_returnsCorrectEquality() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" modelManager \u003d new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" differentAddressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" userPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" addressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" differentUserPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13,"-":126}},{"path":"src/test/java/seedu/address/testutil/AppointmentBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.AppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * A utility class to help with building AppointmentBook objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" * {@code AppointmentBook ab \u003d new AppointmentBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBookBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" private AppointmentBook appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" appointmentBook \u003d new AppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder(AppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook \u003d appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Adds a new {@code Appointment} to the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder withAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":34}},{"path":"src/test/java/seedu/address/testutil/AppointmentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.AppointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" * A utility class to help with building Appointment objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_APPOINTMENT_TYPE \u003d \"Health Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_APPOINTMENT_DATE_TIME \u003d","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" LocalDateTime.of(2024, 10, 15, 10, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final int DEFAULT_PERSON_ID \u003d 1;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_MEDICINE \u003d \"Panadol\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_SICKNESS \u003d \"Flu\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" private AppointmentType appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" private LocalDateTime appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" private int personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" private Medicine medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" private Sickness sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" * Creates a {@code AppointmentBuilder} with the default details.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" appointmentType \u003d new AppointmentType(DEFAULT_APPOINTMENT_TYPE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" appointmentDateTime \u003d DEFAULT_APPOINTMENT_DATE_TIME;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" personId \u003d DEFAULT_PERSON_ID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" medicine \u003d new Medicine(DEFAULT_MEDICINE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" sickness \u003d new Sickness(DEFAULT_SICKNESS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" * Initializes the AppointmentBuilder with the data of {@code appointmentToCopy}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder(Appointment appointmentToCopy) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" appointmentType \u003d appointmentToCopy.getAppointmentType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" appointmentDateTime \u003d appointmentToCopy.getAppointmentDateTime();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" personId \u003d appointmentToCopy.getPersonId();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" medicine \u003d appointmentToCopy.getMedicine();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" sickness \u003d appointmentToCopy.getSickness();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code AppointmentType} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withAppointmentType(String appointmentType) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" this.appointmentType \u003d new AppointmentType(appointmentType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code personId} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withPersonId(int personId) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" this.personId \u003d personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code Medicine} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withMedicine(String medicine) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" this.medicine \u003d new Medicine(medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code appointmentDateTime} of the {@code LocalDateTime} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" this.appointmentDateTime \u003d dateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code Sickness} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withSickness(String sickness) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" this.sickness \u003d new Sickness(sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Builds the {@code Appointment} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" public Appointment build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" return new Appointment(appointmentType, appointmentDateTime, personId, sickness, medicine);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":97}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"choiwab":1,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static String getAddPersonCommand(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" return AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"choiwab":1,"-":59}},{"path":"src/test/java/seedu/address/testutil/TypicalAppointments.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_APPOINTMENT_TYPE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_APPOINTMENT_TYPE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICINE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICINE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SICKNESS_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SICKNESS_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.AppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"public class TypicalAppointments {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" // Set default dates and times for the appointments","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_1 \u003d LocalDateTime.of(2024, 10, 15, 10, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_2 \u003d LocalDateTime.of(2024, 11, 10, 14, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_3 \u003d LocalDateTime.of(2024, 12, 5, 9, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_4 \u003d LocalDateTime.of(2024, 10, 20, 11, 15);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_5 \u003d LocalDateTime.of(2024, 11, 25, 16, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_6 \u003d LocalDateTime.of(2024, 12, 1, 8, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_7 \u003d LocalDateTime.of(2024, 10, 30, 15, 45);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_1 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Health Checkup\").withPersonId(1)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Flu\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Panadol\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_1)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_2 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Dental Checkup\").withPersonId(2)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Toothache\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Ibuprofen\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_2)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_3 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Eye Exam\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" .withPersonId(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Eye Strain\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Eye Drops\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_4 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Physical Therapy\").withPersonId(4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Back Pain\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Paracetamol\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_5 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Vaccination\").withPersonId(5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Vaccine\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_6 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Routine Checkup\").withPersonId(6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_7 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Consultation\").withPersonId(7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Headache\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Aspirin\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" // Manually added","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_8 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Emergency Room\").withPersonId(8)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Injury\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Morphine\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_9 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Surgery Consultation\").withPersonId(9)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Pre-Surgery\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Pre-Meds\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" // Manually added - Appointment\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_AMY \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(VALID_APPOINTMENT_TYPE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" .withSickness(VALID_SICKNESS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(VALID_MEDICINE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_BOB \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(VALID_APPOINTMENT_TYPE_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" .withSickness(VALID_SICKNESS_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(VALID_MEDICINE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" public static final String KEYWORD_MATCHING_CHECKUP \u003d \"Checkup\"; // A keyword that matches Checkup","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" private TypicalAppointments() {} // prevents instantiation","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" * Returns an {@code AppointmentBook} with all the typical appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" public static AppointmentBook getTypicalAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" AppointmentBook ab \u003d new AppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" for (Appointment appointment : getTypicalAppointments()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" ab.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" return ab;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" public static List\u003cAppointment\u003e getTypicalAppointments() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_1,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_2,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_3,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_4,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_5,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_6,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_7));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":136}}] diff --git a/AY2425S1-CS2103T-W10-2_tp_master/commits.json b/AY2425S1-CS2103T-W10-2_tp_master/commits.json index ff456945..4efb6e1d 100644 --- a/AY2425S1-CS2103T-W10-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-W10-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Vangmay":[{"date":"2024-09-27","commitResults":[{"hash":"017d79be5cedab82352edd5ae3cd2c5f9cd87318","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"c66a4be2fc893c714f82bb58328cd493e951f674","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":84}}},{"hash":"a283cc3680c12d8ddda2ad2d6734d23bd920cad8","isMergeCommit":false,"messageTitle":"Add whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"82e37a9c565922dc3a3e12352cc66c7e8318d417","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c9a4180fbf476db9d5074126cf6d3a40c5061","isMergeCommit":true,"messageTitle":"Merge pull request #25 from rxchell/about-us","messageBody":"Update AboutUs page with Rachel\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"c9b96d033c5124f97a6ba647a391f46bfcc6411a","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"c67f0e471b1298ee15b063c7152cecb44360a61f","isMergeCommit":false,"messageTitle":"Refactor FindPersonCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":9},"test-code":{"insertions":16,"deletions":20}}},{"hash":"e3c214c84ecb508b4c6b27a76d0522524a72328f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rxchell/refactor-list-command","messageBody":"Refactor abstraction for List Command","fileTypesAndContributionMap":{}},{"hash":"a9ea7639018ae014dba7385e7abe155f5fd6b6bf","isMergeCommit":true,"messageTitle":"Merge pull request #54 from zaidansani/refactor-clear-command","messageBody":"Refactor ClearCommand to ClearPersonCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"11646ecfd226fb38971b1f57a514aaa9b361f040","isMergeCommit":false,"messageTitle":"Add style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"3ba9b8ccf75ace25be1b42d8809f62d1f6c2a517","isMergeCommit":false,"messageTitle":"Fix test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9a88fdd299e3d45e2fd8089ba9d27b49c37f21f5","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3f112718f3f0c87c51b290164b967e04e681e1ac","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]}],"rxchell":[{"date":"2024-09-27","commitResults":[{"hash":"afb92eb6dfd90afc41451a158fe6441e90767025","isMergeCommit":false,"messageTitle":"Add details for AboutUs","messageBody":"Let\u0027s\n* add Rachel\u0027s details in AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"66549575dc2d8bd5b7dafe9cd9349611f00ecb8b","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"813ed170cbb6a57c8ed146153d6c9d7b53cd9c2e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jayjay19630/jo-an/update-about-us-page","messageBody":"Update AboutUs page with Jo An details","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0f50a89471ffda7779b9a1109336fdd94f1a8a5","isMergeCommit":false,"messageTitle":"Update build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b48a9ffa85d90a02acf794bc5b98db523728183d","isMergeCommit":false,"messageTitle":"Update link to build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"a3c4bde442b52aaa2559c53365c41cf67bb56aeb","isMergeCommit":false,"messageTitle":"Acknowledge the original source","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bd609b53e4adf2be1fc8a5b5dd330dd6ccece1d1","isMergeCommit":false,"messageTitle":"Update contents to match DocTrack","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"43621bc7d68378a35806e7c15c94431df2764bcb","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"d69c92f17d0c3ae238b9dc75048fc4f283273a14","isMergeCommit":false,"messageTitle":"Update target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":6}}},{"hash":"14f51c7d8f9ede0dda41b16face7535195e40270","isMergeCommit":false,"messageTitle":"Update value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae9fcec6915d2676500b87b15151652eb640151e","isMergeCommit":false,"messageTitle":"Add user stories to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-01","commitResults":[{"hash":"5044ba6414abc6aa531070244c4ded8cf5da1719","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jayjay19630/jo-an/add-use-cases","messageBody":"feat: Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"120e5a273052967708cdfab7fcd40b81545e766b","isMergeCommit":false,"messageTitle":"Add personId","messageBody":"Let\u0027s\n* add a static counter to track the total persons\n* add a personId as a field for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"693d4835347b1d9e9ef12f384e2ee5a6cd710a36","isMergeCommit":false,"messageTitle":"Add test for personID","messageBody":"Let\u0027s\n* ensure that personID increments correctly\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"56d3162dba122f67c09d81a0e89b83b3918def08","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":9},"test-code":{"insertions":3,"deletions":3}}},{"hash":"50521676f1026bf0d29b06fcfce6f975718e7336","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"also update test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":7,"deletions":4}}},{"hash":"2ee9ef29cf73c68e8979e82ea0a16706c2edd842","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-personID","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java\n","fileTypesAndContributionMap":{}},{"hash":"2f21715ed0bc6099153f0917d33280056a2f460a","isMergeCommit":false,"messageTitle":"Update test case to match abstractions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0b28578f1189798d2668c306940001452192efa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"0ad073a6126bbce8eed0ee2673e58b4eda1aa092","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Vangmay/branch-find-command","messageBody":"Refactor Find Command","fileTypesAndContributionMap":{}}]}],"jayjay19630":[{"date":"2024-09-27","commitResults":[{"hash":"2eafeb1e7f9249c5939d8aa68497e9e79295d073","isMergeCommit":false,"messageTitle":"feat: update about us with Jo An details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"2f57ac6ed500fd543f311af16d8a1f06091d5270","isMergeCommit":false,"messageTitle":"feat: create jayjay19630.md page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"8606a3e5737e6a069bf7ed08f36f2f5df6622673","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dc96172a7020ce7a84a9e91b0b6fc9c701c33cb","isMergeCommit":true,"messageTitle":"Merge pull request #24 from choiwab/update-about-us-jae","messageBody":"Update Aboutus.md: Add personal details for Jae","fileTypesAndContributionMap":{}},{"hash":"d6920e7d193df322001fa52b10927b136276d0b7","isMergeCommit":false,"messageTitle":"fix: cleanup aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":42}}},{"hash":"a7cf87de71eb3d44c555e6ba7e6503db3f9939cf","isMergeCommit":false,"messageTitle":"fix: change jae link to choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47d3cbdb2dd4838278b0f7c7e605e837887c0fed","isMergeCommit":false,"messageTitle":"fix: make roles format consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"40ce42d5e79fa289a03baae22c3f8df5b72237f2","isMergeCommit":false,"messageTitle":"feat: create use case for finding patient appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":8}}},{"hash":"c50826b1531e8d7169454e0abf814ca969818309","isMergeCommit":false,"messageTitle":"feat: create use cases for updating patient and appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":4}}},{"hash":"f92e31e9522a488120e719a6b460a4f726e8eab8","isMergeCommit":false,"messageTitle":"feat: create usecases for duplicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":2}}},{"hash":"0568923841318b8cffbe97393ea4ad37dad50c9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jayjay19630/tp into jo-an/add-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fbb4d12e7a0e80f10475eb6fff35635000cc33","isMergeCommit":false,"messageTitle":"feat: add usecases for deleting appointment and finding patient from appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"ed51ea7506d318efa4d571f659b7081cc14128ce","isMergeCommit":true,"messageTitle":"Merge pull request #38 from zaidansani/readme-nfr","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0362ef3c1f907481c3ba785835b199e9b40080dc","isMergeCommit":false,"messageTitle":"chore: add issue templates","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":0}}}]},{"date":"2024-10-08","commitResults":[{"hash":"8b3e7e7871444f876160c3d132832c08937fa73c","isMergeCommit":false,"messageTitle":"feat: abstract addperson command into its own command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":64}}},{"hash":"5365aebfee441093ff8d573e818b50f384055344","isMergeCommit":false,"messageTitle":"feat: make parser use switch case for different add commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":28}}},{"hash":"fba48b620850be9764d201e6a0db249b4979c081","isMergeCommit":false,"messageTitle":"feat: fix add person command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":23,"deletions":23},"test-code":{"insertions":12,"deletions":11}}},{"hash":"fe418f331cfbab74b9dd8a234ce287e58d1d433b","isMergeCommit":false,"messageTitle":"refactor: create abstract class for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":53}}},{"hash":"565aa3869437603ad6b567d251038ebeb156d0ed","isMergeCommit":false,"messageTitle":"fix: get index for delete command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a65765e7bd0c1a8c75094b86b2c034aacd1c5d9e","isMergeCommit":false,"messageTitle":"fix: resolve logic manageer tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6},"test-code":{"insertions":49,"deletions":39}}},{"hash":"9317742129b25abbe7ab34c1417cc71a8d7d96ad","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":48,"deletions":25}}}]}],"choiwab":[{"date":"2024-09-27","commitResults":[{"hash":"5dec60851a1970e88bf1edd600f89f4d95042b14","isMergeCommit":true,"messageTitle":"Merge pull request #10 from zaidansani/add-zaidan-photo","messageBody":"Add Zaidan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"ea61bc77bb8c9df3659d5c4f64a011f3e169c226","isMergeCommit":false,"messageTitle":"Update Aboutus.md: Add personal details for Jae","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8c0dfb58ad37ff4240d98dd672cad916ca7edff3","isMergeCommit":false,"messageTitle":"Add choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"0fb8031bb72a80a562625ba13e7eb370ab6d4704","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zaidansani/aboutme-zaidan","messageBody":"Update AboutUs page for Zaidan","fileTypesAndContributionMap":{}},{"hash":"6b8a5debbac4ff578e7f62836c8837293e538a62","isMergeCommit":false,"messageTitle":"Update choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"69570b8f49cf80b7de68f1d2fac1b5495767a500","isMergeCommit":false,"messageTitle":"Update AboutUs.md: Fix Name after ###","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"267bec4ede66398d9cb22a0e96089b0dfb79347d","isMergeCommit":false,"messageTitle":"Delete docs/team/jae.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0bb06721e1e77cfb8c6896907ced0b3b294be28","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rxchell/update-readme","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"14adc890a2f839556f9962a3d4a9e3e8d067ffd6","isMergeCommit":true,"messageTitle":"Merge pull request #37 from rxchell/update-developer-guide","messageBody":"Update target user, value proposition, and user stories in developer guide","fileTypesAndContributionMap":{}}]}],"zaidansani":[{"date":"2024-09-27","commitResults":[{"hash":"50a5fdffe90d9ac502ac77645eea9f7847af38ba","isMergeCommit":false,"messageTitle":"Update AboutUs page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":7}}},{"hash":"1e17fe83204a9d19c8f582234a3430401c80645c","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"a2321b2f79c403b9681d020e4139b25cef4fdd0a","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"057d02361b8860543b0dc57fcffe8cdf54905480","isMergeCommit":false,"messageTitle":"Update portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"eb618235dc5ec261690c16bbc6c2ed06578e0c31","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccb975fd4376ab3b65556d3d3d034fc96bfbff5","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vangmay/update-about","messageBody":"Update aboutus page with Vangmay\u0027s details","fileTypesAndContributionMap":{}},{"hash":"56e5e8a917fdbb938cc994c118015e8b99f5f569","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jayjay19630/jo-an/clean-up-aboutus-page","messageBody":"fix: Cleanup AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"2bf6a7299997de603ebf684ffda599013e4f2166","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"7c424b5819f0abf7c67030e824dab9781707f5c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from jayjay19630/jo-an/add-issue-templates","messageBody":"chore: add Github issue templates","fileTypesAndContributionMap":{}},{"hash":"72d9fa2a93da22656c2478dfbf083bdac2bee9f4","isMergeCommit":false,"messageTitle":"Refactor: DeleteCommand","messageBody":"Two DeleteCommands will exist for next increment.\n\nLet\u0027s\n* refactor all DeleteCommands.\n* add support to parser to take in new command format.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"other":{"insertions":33,"deletions":33},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4e2cc6f50b95874ed58aa468f639bd6dd95ba965","isMergeCommit":false,"messageTitle":"Edit command word for all","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-04","commitResults":[{"hash":"b212a2b1a6bf0bda5d6a2f9127e784bd6d6ddee5","isMergeCommit":false,"messageTitle":"Fix test with new expected input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"49aaa297c8ec01a89d03363ea333757ddfbda2f4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from zaidansani/refactor-delete-command","messageBody":"Refactor delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"6fce1615df07b94d5fb54e08409eac749a3fd7c4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jayjay19630/feat/create-command-abstractions","messageBody":"Create Command Abstractions","fileTypesAndContributionMap":{}},{"hash":"df2d0c86cf1c236499c92ea38d79075cf9f3e2e9","isMergeCommit":false,"messageTitle":"refactor: clear command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":8},"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d068b6111ae21879b1232a57d82ed3281cf8128f","isMergeCommit":true,"messageTitle":"Merge pull request #51 from rxchell/add-personID","messageBody":"Add personId","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vangmay":{"docs":6,"functional-code":78,"test-code":14},"rxchell":{"docs":79,"functional-code":97,"test-code":28},"jayjay19630":{"docs":246,"functional-code":242,"test-code":101},"choiwab":{"docs":10,"functional-code":0,"test-code":0},"zaidansani":{"docs":30,"functional-code":79,"test-code":37}},"authorContributionVariance":{"Vangmay":978.9832,"rxchell":921.97736,"jayjay19630":17111.55,"choiwab":23.954645,"zaidansani":904.2307},"authorDisplayNameMap":{"Vangmay":"CS2103T-W10-2 SACH..GMAY","rxchell":"CS2103T-W10-2 RACH.. JIA","jayjay19630":"CS2103T-W10-2 JO A..O AN","choiwab":"CS2103T-W10-2 CHOI..YEOK","zaidansani":"CS2103T-W10-2 MUHA..SANI"}} +{"authorDailyContributionsMap":{"Vangmay":[{"date":"2024-09-27","commitResults":[{"hash":"017d79be5cedab82352edd5ae3cd2c5f9cd87318","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"c66a4be2fc893c714f82bb58328cd493e951f674","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":84}}},{"hash":"a283cc3680c12d8ddda2ad2d6734d23bd920cad8","isMergeCommit":false,"messageTitle":"Add whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"82e37a9c565922dc3a3e12352cc66c7e8318d417","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c9a4180fbf476db9d5074126cf6d3a40c5061","isMergeCommit":true,"messageTitle":"Merge pull request #25 from rxchell/about-us","messageBody":"Update AboutUs page with Rachel\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"c9b96d033c5124f97a6ba647a391f46bfcc6411a","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"c67f0e471b1298ee15b063c7152cecb44360a61f","isMergeCommit":false,"messageTitle":"Refactor FindPersonCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":9},"test-code":{"insertions":16,"deletions":20}}},{"hash":"e3c214c84ecb508b4c6b27a76d0522524a72328f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rxchell/refactor-list-command","messageBody":"Refactor abstraction for List Command","fileTypesAndContributionMap":{}},{"hash":"a9ea7639018ae014dba7385e7abe155f5fd6b6bf","isMergeCommit":true,"messageTitle":"Merge pull request #54 from zaidansani/refactor-clear-command","messageBody":"Refactor ClearCommand to ClearPersonCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"11646ecfd226fb38971b1f57a514aaa9b361f040","isMergeCommit":false,"messageTitle":"Add style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"3ba9b8ccf75ace25be1b42d8809f62d1f6c2a517","isMergeCommit":false,"messageTitle":"Fix test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9a88fdd299e3d45e2fd8089ba9d27b49c37f21f5","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3f112718f3f0c87c51b290164b967e04e681e1ac","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]}],"rxchell":[{"date":"2024-09-27","commitResults":[{"hash":"afb92eb6dfd90afc41451a158fe6441e90767025","isMergeCommit":false,"messageTitle":"Add details for AboutUs","messageBody":"Let\u0027s\n* add Rachel\u0027s details in AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"66549575dc2d8bd5b7dafe9cd9349611f00ecb8b","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"813ed170cbb6a57c8ed146153d6c9d7b53cd9c2e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jayjay19630/jo-an/update-about-us-page","messageBody":"Update AboutUs page with Jo An details","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0f50a89471ffda7779b9a1109336fdd94f1a8a5","isMergeCommit":false,"messageTitle":"Update build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b48a9ffa85d90a02acf794bc5b98db523728183d","isMergeCommit":false,"messageTitle":"Update link to build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"a3c4bde442b52aaa2559c53365c41cf67bb56aeb","isMergeCommit":false,"messageTitle":"Acknowledge the original source","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bd609b53e4adf2be1fc8a5b5dd330dd6ccece1d1","isMergeCommit":false,"messageTitle":"Update contents to match DocTrack","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"43621bc7d68378a35806e7c15c94431df2764bcb","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"d69c92f17d0c3ae238b9dc75048fc4f283273a14","isMergeCommit":false,"messageTitle":"Update target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":6}}},{"hash":"14f51c7d8f9ede0dda41b16face7535195e40270","isMergeCommit":false,"messageTitle":"Update value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae9fcec6915d2676500b87b15151652eb640151e","isMergeCommit":false,"messageTitle":"Add user stories to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-01","commitResults":[{"hash":"5044ba6414abc6aa531070244c4ded8cf5da1719","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jayjay19630/jo-an/add-use-cases","messageBody":"feat: Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"120e5a273052967708cdfab7fcd40b81545e766b","isMergeCommit":false,"messageTitle":"Add personId","messageBody":"Let\u0027s\n* add a static counter to track the total persons\n* add a personId as a field for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"693d4835347b1d9e9ef12f384e2ee5a6cd710a36","isMergeCommit":false,"messageTitle":"Add test for personID","messageBody":"Let\u0027s\n* ensure that personID increments correctly\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"56d3162dba122f67c09d81a0e89b83b3918def08","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":9},"test-code":{"insertions":3,"deletions":3}}},{"hash":"50521676f1026bf0d29b06fcfce6f975718e7336","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"also update test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":7,"deletions":4}}},{"hash":"2ee9ef29cf73c68e8979e82ea0a16706c2edd842","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-personID","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java\n","fileTypesAndContributionMap":{}},{"hash":"2f21715ed0bc6099153f0917d33280056a2f460a","isMergeCommit":false,"messageTitle":"Update test case to match abstractions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0b28578f1189798d2668c306940001452192efa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"0ad073a6126bbce8eed0ee2673e58b4eda1aa092","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Vangmay/branch-find-command","messageBody":"Refactor Find Command","fileTypesAndContributionMap":{}}]}],"jayjay19630":[{"date":"2024-09-27","commitResults":[{"hash":"2eafeb1e7f9249c5939d8aa68497e9e79295d073","isMergeCommit":false,"messageTitle":"feat: update about us with Jo An details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"2f57ac6ed500fd543f311af16d8a1f06091d5270","isMergeCommit":false,"messageTitle":"feat: create jayjay19630.md page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"8606a3e5737e6a069bf7ed08f36f2f5df6622673","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dc96172a7020ce7a84a9e91b0b6fc9c701c33cb","isMergeCommit":true,"messageTitle":"Merge pull request #24 from choiwab/update-about-us-jae","messageBody":"Update Aboutus.md: Add personal details for Jae","fileTypesAndContributionMap":{}},{"hash":"d6920e7d193df322001fa52b10927b136276d0b7","isMergeCommit":false,"messageTitle":"fix: cleanup aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":42}}},{"hash":"a7cf87de71eb3d44c555e6ba7e6503db3f9939cf","isMergeCommit":false,"messageTitle":"fix: change jae link to choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47d3cbdb2dd4838278b0f7c7e605e837887c0fed","isMergeCommit":false,"messageTitle":"fix: make roles format consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"40ce42d5e79fa289a03baae22c3f8df5b72237f2","isMergeCommit":false,"messageTitle":"feat: create use case for finding patient appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":8}}},{"hash":"c50826b1531e8d7169454e0abf814ca969818309","isMergeCommit":false,"messageTitle":"feat: create use cases for updating patient and appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":4}}},{"hash":"f92e31e9522a488120e719a6b460a4f726e8eab8","isMergeCommit":false,"messageTitle":"feat: create usecases for duplicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":2}}},{"hash":"0568923841318b8cffbe97393ea4ad37dad50c9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jayjay19630/tp into jo-an/add-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fbb4d12e7a0e80f10475eb6fff35635000cc33","isMergeCommit":false,"messageTitle":"feat: add usecases for deleting appointment and finding patient from appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"ed51ea7506d318efa4d571f659b7081cc14128ce","isMergeCommit":true,"messageTitle":"Merge pull request #38 from zaidansani/readme-nfr","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0362ef3c1f907481c3ba785835b199e9b40080dc","isMergeCommit":false,"messageTitle":"chore: add issue templates","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":0}}}]},{"date":"2024-10-08","commitResults":[{"hash":"8b3e7e7871444f876160c3d132832c08937fa73c","isMergeCommit":false,"messageTitle":"feat: abstract addperson command into its own command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":64}}},{"hash":"5365aebfee441093ff8d573e818b50f384055344","isMergeCommit":false,"messageTitle":"feat: make parser use switch case for different add commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":28}}},{"hash":"fba48b620850be9764d201e6a0db249b4979c081","isMergeCommit":false,"messageTitle":"feat: fix add person command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":23,"deletions":23},"test-code":{"insertions":12,"deletions":11}}},{"hash":"fe418f331cfbab74b9dd8a234ce287e58d1d433b","isMergeCommit":false,"messageTitle":"refactor: create abstract class for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":53}}},{"hash":"565aa3869437603ad6b567d251038ebeb156d0ed","isMergeCommit":false,"messageTitle":"fix: get index for delete command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a65765e7bd0c1a8c75094b86b2c034aacd1c5d9e","isMergeCommit":false,"messageTitle":"fix: resolve logic manageer tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6},"test-code":{"insertions":49,"deletions":39}}},{"hash":"9317742129b25abbe7ab34c1417cc71a8d7d96ad","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":48,"deletions":25}}}]},{"date":"2024-10-12","commitResults":[{"hash":"7e3fac5e04356c9e5858882627ab89d5ffedf5a3","isMergeCommit":false,"messageTitle":"create appointment model and readonly book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":0}}},{"hash":"7446deb8852b3c48caa7017f4dabaedaab5c074e","isMergeCommit":false,"messageTitle":"create unique appointmnet list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":169,"deletions":0}}},{"hash":"b6c91be29dfec43330db12ed6d5da4c5416aa6f0","isMergeCommit":false,"messageTitle":"create appointment book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":0}}},{"hash":"60dade0e4db92702ac5c0b31dd6235f03e6b0182","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":23},"test-code":{"insertions":64,"deletions":22}}},{"hash":"1435a7114cbbf707e35ee38570448af79985d660","isMergeCommit":false,"messageTitle":"fix: create appointment builder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":257,"deletions":22}}},{"hash":"745e7d5d87190440a37336f103c584fba5d3cde4","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}}]},{"date":"2024-10-13","commitResults":[{"hash":"c730a3c29bc915bd1eac8606dfb33dd6da24262c","isMergeCommit":false,"messageTitle":"feat: add datetime to appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":96,"deletions":21}}},{"hash":"9a4a4d28d375955e05aeddb3cd8e7e85bec19894","isMergeCommit":true,"messageTitle":"Merge pull request #58 from choiwab/refractor-Edit","messageBody":"Refractor EditCommand","fileTypesAndContributionMap":{}}]}],"choiwab":[{"date":"2024-09-27","commitResults":[{"hash":"5dec60851a1970e88bf1edd600f89f4d95042b14","isMergeCommit":true,"messageTitle":"Merge pull request #10 from zaidansani/add-zaidan-photo","messageBody":"Add Zaidan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"ea61bc77bb8c9df3659d5c4f64a011f3e169c226","isMergeCommit":false,"messageTitle":"Update Aboutus.md: Add personal details for Jae","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8c0dfb58ad37ff4240d98dd672cad916ca7edff3","isMergeCommit":false,"messageTitle":"Add choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"0fb8031bb72a80a562625ba13e7eb370ab6d4704","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zaidansani/aboutme-zaidan","messageBody":"Update AboutUs page for Zaidan","fileTypesAndContributionMap":{}},{"hash":"6b8a5debbac4ff578e7f62836c8837293e538a62","isMergeCommit":false,"messageTitle":"Update choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"69570b8f49cf80b7de68f1d2fac1b5495767a500","isMergeCommit":false,"messageTitle":"Update AboutUs.md: Fix Name after ###","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"267bec4ede66398d9cb22a0e96089b0dfb79347d","isMergeCommit":false,"messageTitle":"Delete docs/team/jae.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0bb06721e1e77cfb8c6896907ced0b3b294be28","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rxchell/update-readme","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"14adc890a2f839556f9962a3d4a9e3e8d067ffd6","isMergeCommit":true,"messageTitle":"Merge pull request #37 from rxchell/update-developer-guide","messageBody":"Update target user, value proposition, and user stories in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"bc183b206f0f93a16a3709115a4eb4520844b972","isMergeCommit":false,"messageTitle":"Refractor EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":301,"deletions":164},"other":{"insertions":70,"deletions":57},"test-code":{"insertions":10,"deletions":8}}},{"hash":"743b49e97b5193c4c843fb2c4c7d7fd654cd2d15","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/choiwab/tp into refractor-Edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4c5b7ffdcb4f2422466ffbc8fb60b83e0e327ce","isMergeCommit":false,"messageTitle":"Refractor EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"d4afd64b5b65c2feeda46c9263040494017d1c39","isMergeCommit":false,"messageTitle":"EditPersonCommand.java: fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"4396dc0160f787e06d5b40f03bbca890729a856f","isMergeCommit":false,"messageTitle":"Update EditPersonCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":27},"test-code":{"insertions":6,"deletions":159}}}]},{"date":"2024-10-13","commitResults":[{"hash":"1f7f59b028f738d687a9bc9b353a1d2a3693b04a","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jayjay19630/jo-an/create-model-for-appointments","messageBody":"Create model for appointments","fileTypesAndContributionMap":{}},{"hash":"07c817adb7dc2d732280e431a50b9b8cba8897d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/choiwab/tp into refractor-Edit","messageBody":"","fileTypesAndContributionMap":{}}]}],"zaidansani":[{"date":"2024-09-27","commitResults":[{"hash":"50a5fdffe90d9ac502ac77645eea9f7847af38ba","isMergeCommit":false,"messageTitle":"Update AboutUs page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":7}}},{"hash":"1e17fe83204a9d19c8f582234a3430401c80645c","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"a2321b2f79c403b9681d020e4139b25cef4fdd0a","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"057d02361b8860543b0dc57fcffe8cdf54905480","isMergeCommit":false,"messageTitle":"Update portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"eb618235dc5ec261690c16bbc6c2ed06578e0c31","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccb975fd4376ab3b65556d3d3d034fc96bfbff5","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vangmay/update-about","messageBody":"Update aboutus page with Vangmay\u0027s details","fileTypesAndContributionMap":{}},{"hash":"56e5e8a917fdbb938cc994c118015e8b99f5f569","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jayjay19630/jo-an/clean-up-aboutus-page","messageBody":"fix: Cleanup AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"2bf6a7299997de603ebf684ffda599013e4f2166","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"7c424b5819f0abf7c67030e824dab9781707f5c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from jayjay19630/jo-an/add-issue-templates","messageBody":"chore: add Github issue templates","fileTypesAndContributionMap":{}},{"hash":"72d9fa2a93da22656c2478dfbf083bdac2bee9f4","isMergeCommit":false,"messageTitle":"Refactor: DeleteCommand","messageBody":"Two DeleteCommands will exist for next increment.\n\nLet\u0027s\n* refactor all DeleteCommands.\n* add support to parser to take in new command format.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"other":{"insertions":33,"deletions":33},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4e2cc6f50b95874ed58aa468f639bd6dd95ba965","isMergeCommit":false,"messageTitle":"Edit command word for all","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-04","commitResults":[{"hash":"b212a2b1a6bf0bda5d6a2f9127e784bd6d6ddee5","isMergeCommit":false,"messageTitle":"Fix test with new expected input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"49aaa297c8ec01a89d03363ea333757ddfbda2f4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from zaidansani/refactor-delete-command","messageBody":"Refactor delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"6fce1615df07b94d5fb54e08409eac749a3fd7c4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jayjay19630/feat/create-command-abstractions","messageBody":"Create Command Abstractions","fileTypesAndContributionMap":{}},{"hash":"df2d0c86cf1c236499c92ea38d79075cf9f3e2e9","isMergeCommit":false,"messageTitle":"refactor: clear command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":8},"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d068b6111ae21879b1232a57d82ed3281cf8128f","isMergeCommit":true,"messageTitle":"Merge pull request #51 from rxchell/add-personID","messageBody":"Add personId","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vangmay":{"docs":6,"functional-code":78,"test-code":14},"rxchell":{"docs":79,"functional-code":97,"test-code":26},"jayjay19630":{"docs":246,"functional-code":1004,"test-code":482},"choiwab":{"docs":10,"functional-code":326,"test-code":41},"zaidansani":{"docs":30,"functional-code":79,"test-code":37}},"authorContributionVariance":{"Vangmay":942.29004,"rxchell":888.9427,"jayjay19630":65145.33,"choiwab":31436.0,"zaidansani":872.47235},"authorDisplayNameMap":{"Vangmay":"CS2103T-W10-2 SACH..GMAY","rxchell":"CS2103T-W10-2 RACH.. JIA","jayjay19630":"CS2103T-W10-2 JO A..O AN","choiwab":"CS2103T-W10-2 CHOI..YEOK","zaidansani":"CS2103T-W10-2 MUHA..SANI"}} diff --git a/AY2425S1-CS2103T-W14-2_tp_master/authorship.json b/AY2425S1-CS2103T-W14-2_tp_master/authorship.json index bd9e8cbb..ef9e11e8 100644 --- a/AY2425S1-CS2103T-W14-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W14-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ is an address book for salespeople to store sales-related information about their clients.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ can...","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"* Consolidate information about clients from multiple sources.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"* Provide an overview of all clients and offers options to visualise information about specific client groups, especially those that they need to prioritise to optimise their sales.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"* This project is based on the **[AddressBook-Level3](https://se-education.org/addressbook-level3)** project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":7,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"### Eliot Snodgrass","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"\u003cimg src\u003d\"images/appleshill.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":"[[github](https://github.com/appleshill)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"### Arvind Natarajan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"\u003cimg src\u003d\"images/diegotheexplorar.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"[[github](https://github.com/DiegoTheExplorar)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"[[portfolio](www.linkedin.com/in/arvind-natarajan-65aa77290)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":"* Responsibilities: I make sure codebase is well documented","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":"### Valentin Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"\u003cimg src\u003d\"images/valhrd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":"[[github](http://github.com/valhrd)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":"### Isaac Chan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":"\u003cimg src\u003d\"images/frymash.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":"[[github](http://github.com/frymash)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"RyanWarwick"},"content":"### Ryan Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"RyanWarwick"},"content":"\u003cimg src\u003d\"images/github_ryanwarwick.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"RyanWarwick"},"content":"[[github](http://github.com/RyanWarwick)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"RyanWarwick"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"RyanWarwick"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"frymash":5,"RyanWarwick":5,"DiegoTheExplorar":6,"valhrd":5,"-":35,"appleshill":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"RyanWarwick"},"content":"* frequently uses contacts for work (business)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"RyanWarwick"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"RyanWarwick"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"RyanWarwick"},"content":"* prioritise contacts for scheduling and work efficiency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | filter a person by tags | locate persons by category without having to go through the entire list|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | export contacts to csv | share and combine address books |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"RyanWarwick"},"content":"| `*` | user with many persons in the address book | import contacts from csv | combine and update existing address books easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"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","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input form for person\u0027s details","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"RyanWarwick"},"content":"3. User enters person details like name, phone number, email, tags etc","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook validates user input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook saves the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The user input is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"RyanWarwick"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"RyanWarwick"},"content":" * 4a2. AddressBook requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"RyanWarwick"},"content":" * 4a3. User enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"RyanWarwick"},"content":" * Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"RyanWarwick"},"content":" * Use case resumes at step 5.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Filter by tag**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to filter persons by tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input search bar","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"RyanWarwick"},"content":"3. User enters input related to key or value of a tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook shows a list of persons with matching tag key or value","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Export to CSV**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to export file to CSV","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook opens file manager for user to choose destination directory","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"RyanWarwick"},"content":"3. User enters destination directory and file name","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook outputs list of persons to CSV file in corresponding destination","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook opens destination directory containing CSV file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"RyanWarwick"},"content":"* 2a. AddressBook is unable to open file manager.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"RyanWarwick"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"RyanWarwick"},"content":"2. Should work on any _mainstream OS_ without requiring any further installation or additional platform-specific dependencies","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"RyanWarwick"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"RyanWarwick"},"content":"4. 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-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"RyanWarwick"},"content":"5. Should automatically save changes to the local data file, and it should be able to recover from unexpected shutdowns or power failures without data loss.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"RyanWarwick"},"content":"6. Should have a responsive and intuitive user interface that works well across different screen resolutions (1920 x 1080 or higher).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"RyanWarwick"},"content":"7. Should be easy to use and provide clear instructions and feedback to the user for common tasks like adding, filtering, and exporting contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"RyanWarwick"},"content":"8. Should be designed to accommodate future growth in the number of persons and additional features without major rewriting of code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"RyanWarwick"},"content":"9. Should not store or transmit sensitive data insecurely.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"RyanWarwick"},"content":"10. Should be modular and easy to test to support automated unit testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"RyanWarwick"},"content":".","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"RyanWarwick"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"appleshill"},"content":"* **Command-line Interface (CLI)**: A text-based user interface where the user interacts with the application by typing commands, as opposed to a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"appleshill"},"content":"* **Typical Usage**: The expected day-to-day usage of the application by the target user, which should not cause significant performance degradation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"appleshill"},"content":"* **Above-average Typing Speed**: A typing speed that is higher than the average user, allowing the user to input commands and data more efficiently.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"RyanWarwick"},"content":"* **Platform-specific dependencies**: Additional software required to run the application due to differences in Mainstream OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"RyanWarwick"},"content":"* **Local data file**: File stored on and only on the user\u0027s computer/device running the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"RyanWarwick"},"content":"* **Sensitive Data**: Data in any form (often text) that may harm the user or persons if exposed to unwanted parties (e.g. financial data, credit card info)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"RyanWarwick"},"content":"* **File Manager**: OS-specific software that allows user to view and manage (create, delete etc) files on their computer/device. Often comes pre-installed as part of the OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"RyanWarwick"},"content":"* **CSV**: Type of format of file that stores data in an ordered fashion using rows and columns. Often used in third-party spreadsheet software such as Microsoft Excel.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"RyanWarwick"},"content":"* **Tag**: Form of text-based labelling to categorise persons or data for organisation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"RyanWarwick"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"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","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"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","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"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","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"RyanWarwick":87,"-":391,"appleshill":3}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eBA€\u003c/a\u003e","lastModifiedDate":"2024-09-14","isFullCredit":false},{"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-09-29","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-W14-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":66}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" new DuplicatePhoneTagger().tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"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","isFullCredit":false},{"lineNumber":74,"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","isFullCredit":false},{"lineNumber":75,"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"valhrd":2,"-":186}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"Annual premium of $1200 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"@jdoe3\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":82,"appleshill":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":69}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" + \"...\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":" String updatedFinancialInfo \u003d editPersonDescriptor.getFinancialInfo().orElse(personToEdit.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" String updatedSocialMediaHandle \u003d editPersonDescriptor.getSocialMediaHandle()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" .orElse(personToEdit.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" updatedFinancialInfo, updatedSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"appleshill"},"content":" setFinancialInfo(toCopy.financialInfo);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"appleshill"},"content":" setSocialMediaHandle(toCopy.socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":" public void setFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d info;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(financialInfo);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" public void setSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d handle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(financialInfo, otherEditPersonDescriptor.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(socialMediaHandle, otherEditPersonDescriptor.socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"appleshill"},"content":" .add(\"financial info\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"appleshill"},"content":" .add(\"social media handle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":238,"appleshill":37}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":" * Exports the address book in a specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":" * Currently, BA€ can export the address book as a CSV file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Export: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" + \": Exports the address book in CSV format. \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" + \"format/csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"Export command not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" private final String format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" * Constructs a ExportCommand instance (TODO: supplement JavaDoc stub)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" * @param format the file format of the file to be exported (this should be \".csv\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" public ExportCommand(String format) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" requireAllNonNull(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" this.format \u003d format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" throw new CommandException(String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":" if (!(other instanceof ExportCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":" ExportCommand e \u003d (ExportCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":" return format.equals(e.format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":52}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" * Filters the contact list based on name and/or tags.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" + \": Filters the contact list by name and/or tags.\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Parameters: [n/NAME] [t/TAG]\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Example: \" + COMMAND_WORD + \" n/John t/client\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_NO_CONTACT_FOUND \u003d \"No contacts match the filter criteria.\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" * Class that handles FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean nameMatches \u003d name \u003d\u003d null || name.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getName().toString().toLowerCase().contains(name.toLowerCase());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean tagMatches \u003d tagName \u003d\u003d null || tagName.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getTags().stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":" return nameMatches","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" \u0026\u0026 tagMatches;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" };","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(MESSAGE_NO_CONTACT_FOUND);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(constructSuccessMessage(this.name, this.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" * Dynamically produced the success message based on the name and tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" public static String constructSuccessMessage(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" StringBuilder messageBuilder \u003d new StringBuilder(\"Displaying filtered results: \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" if (name !\u003d null \u0026\u0026 !name.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Name: \").append(name).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" if (tagName !\u003d null \u0026\u0026 !tagName.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Tag: \").append(tagName).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" return messageBuilder.toString().trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand otherCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isNameEqual \u003d (name \u003d\u003d null \u0026\u0026 otherCommand.name \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" || (name !\u003d null \u0026\u0026 name.equals(otherCommand.name));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isTagNameEqual \u003d (tagName \u003d\u003d null \u0026\u0026 otherCommand.tagName \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" || (tagName !\u003d null \u0026\u0026 tagName.equals(otherCommand.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" return isNameEqual \u0026\u0026 isTagNameEqual;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" .toString();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":103}},{"path":"src/main/java/seedu/address/logic/handler/DuplicatePhoneTagger.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":" * Tags people that share the same phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTagger {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":" public static final String DUPLICATE_PHONE_TAG_NAME \u003d \"DuplicatePhone\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":" private static final Tag DUPLICATE_TAG \u003d new Tag(DUPLICATE_PHONE_TAG_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":" private final HashMap\u003cPhone, Integer\u003e phoneFrequencies \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" * Uses the model to update the person list based on duplicate phone numbers","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" * @param model that represents the current state of the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" public void tagPhoneDuplicates(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" updatePersonsList(model, persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" * Counts and stores the frequency of each phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" * @param persons the list of persons in the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" public void updateFrequenciesOfPhones(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" clearFrequencies();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.put(person.getPhone(), phoneFrequencies.getOrDefault(person.getPhone(), 0) + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" * Checks if there exists a duplicate phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" * @return true if there is a duplicate, else false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":" public boolean isDuplicatePresent() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" for (Phone phone : phoneFrequencies.keySet()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate(phone)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" public boolean isPhoneDuplicate(Phone phone) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" return phoneFrequencies.getOrDefault(phone, 0) \u003e 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void clearFrequencies() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" private void updatePersonsList(Model model, List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" for (Person personToUpdate : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d personToUpdate.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" boolean isPhoneDuplicate \u003d isPhoneDuplicate(phone);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" Person updatedPerson \u003d updatePerson(personToUpdate, isPhoneDuplicate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":" private Person updatePerson(Person person, boolean isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" String financialInfo \u003d person.getFinancialInfo();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" String socialMediaHandle \u003d person.getSocialMediaHandle();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" newTags.addAll(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":" newTags.add(DUPLICATE_TAG);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" newTags.removeIf(tag -\u003e tag.equals(DUPLICATE_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" return new Person(name, phone, email, address, newTags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":96}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" // Optional","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" String financialInfo \u003d argMultimap.getValue(PREFIX_FINANCIAL_INFO).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle \u003d argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":55,"appleshill":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" return new ExportCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"frymash":4,"DiegoTheExplorar":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_FINANCIAL_INFO \u003d new Prefix(\"fi/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_HANDLE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" public static final Prefix PREFIX_EXPORT_FORMAT \u003d new Prefix(\"format/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"frymash":1,"-":14,"appleshill":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" PREFIX_TAG, PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_FINANCIAL_INFO).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setFinancialInfo(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseFinancialInfo(argMultimap.getValue(PREFIX_FINANCIAL_INFO).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setSocialMediaHandle(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseSocialMediaHandle(argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"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","isFullCredit":false},{"lineNumber":83,"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":82,"appleshill":14}},{"path":"src/main/java/seedu/address/logic/parser/ExportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":" * Parses input commands and creates a new ExportCommand object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"public class ExportCommandParser implements Parser\u003cExportCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" private static final Pattern EXPORT_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(format/(?\u003cformat\u003e\\\\S+))\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" * Parses the given {@code String} of arguments in the context of the ExportCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" * and returns an ExportCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" public ExportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":" final Matcher matcher \u003d EXPORT_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" // Extract the format from the input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" String format \u003d matcher.group(\"format\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" if ((format \u003d\u003d null || format.isEmpty())) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" return new ExportCommand(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":39}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses input for filter and creates an instance of FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" //regex to filter the input to extract NAME and/or TAG","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" private static final Pattern FILTER_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(n/(?\u003cname\u003e\\\\S+))?\\\\s*(t/(?\u003ctag\u003e\\\\S+))?\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" final Matcher matcher \u003d FILTER_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" // Extract the name and tag from the input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" String name \u003d matcher.group(\"name\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" String tag \u003d matcher.group(\"tag\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" if ((name \u003d\u003d null || name.isEmpty()) \u0026\u0026 (tag \u003d\u003d null || tag.isEmpty())) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommand(name, tag);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":41}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String financialInfo}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String financialInfo} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" public static String parseFinancialInfo(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String socialMediaHandle}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String info} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"appleshill"},"content":" public static String parseSocialMediaHandle(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"appleshill":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" requireAllNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" public String getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" return financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" public String getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" return socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 financialInfo.equals(otherPerson.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 socialMediaHandle.equals(otherPerson.socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" return Objects.hash(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" .add(\"financialInfo\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" .add(\"socialMediaHandle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":114,"appleshill":20}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}^]+\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":61,"appleshill":1}},{"path":"src/main/java/seedu/address/model/tag/TagField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"/* import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"public class TagField {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag field key and value should be alphanumeric\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" public final String key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public TagField(String key, String value) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" requireNonNull(key);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(key), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":" public static boolean isValidTagField(String test) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" if (!(other instanceof TagField)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" TagField otherTagField \u003d (TagField) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" return key.equals(otherTagField.key) \u0026\u0026 value.equals(otherTagField.value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" return (key + value).hashCode();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" return key + \":\" + value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \"Income category: $60,000 - $80,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \"bernice_yu\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \"Annual auto insurance premium: $800\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \"charlotte_o\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" \"Income category: $40,000 - $60,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" \"david_li\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"Annual home insurance premium: $950\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \"irfan_ibrahim\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \"Income category: $80,000 - $100,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \"roy_b\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"financialInfo\") String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"socialMediaHandle\") String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d source.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d source.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" if (financialInfo \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" final String modelFinancialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" if (socialMediaHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"appleshill"},"content":" final String modelSocialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" modelFinancialInfo, modelSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" private Label financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" private Label socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" financialInfo.setText(person.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" socialMediaHandle.setText(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" if (tag.tagName.equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" label.setId(\"duplicate\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" });","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":8,"-":58,"appleshill":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"valhrd"},"content":"#tags .label#duplicate {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"valhrd"},"content":" -fx-background-color: #a1ae00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":352}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"financialInfo\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$financial info\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"socialMediaHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$socialMediaHandle\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":36,"appleshill":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"appleshill":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"-":200,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_AMY \u003d \"$1200 income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_BOB \u003d \"No income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_AMY \u003d \"Amy_A\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_BOB \u003d \"Bob_B\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" public static final String FINANCIAL_INFO_DESC_AMY \u003d \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" public static final String SOCIAL_MEDIA_HANDLE_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_HANDLE","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"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","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":128,"appleshill":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", financial info\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getFinancialInfo().orElse(null) + \", social media handle\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getSocialMediaHandle().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.ExportCommand.MESSAGE_ARGUMENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" public void execute() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" final String format \u003d \"csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" assertCommandFailure(new ExportCommand(format), model, String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" final ExportCommand standardCommand \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" final String differentFormat \u003d \"pdf\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" ExportCommand commandWithSameValues \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" // different export format -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ExportCommand(differentFormat)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":45}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" private Model model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" @BeforeEach","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" public void setUp() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(null, \"second\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using name only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using tag only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_tagKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for fitlering usign both","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameAndTagKeywords_personFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for when there is no one after filtering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_noMatchingNameOrTag_allPersonsReturned() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.MESSAGE_NO_CONTACT_FOUND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Damith\", \"2103\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case to test parital string fitlering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_partialNameMatch_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterCommand \u003d new FilterCommand(\"John\", \"client\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{name\u003dJohn, tagName\u003dclient}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":102}},{"path":"src/test/java/seedu/address/logic/handler/DuplicatePhoneTaggerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTaggerTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_ONE \u003d \"11111111\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_TWO \u003d \"12345678\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_THREE \u003d \"87654321\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FOUR \u003d \"23232323\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FIVE \u003d \"32323232\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SIX \u003d \"45454545\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SEVEN \u003d \"54545454\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" private static final Person AIKEN \u003d new PersonBuilder().withName(\"Aiken\").withPhone(TEST_PHONE_ONE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@gmail.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" private static final Person ALEX \u003d new PersonBuilder().withName(\"Alex\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alex@yahoo.com\").withAddress(\"Minecraft\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").withPhone(TEST_PHONE_THREE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alice@hotmail.com\").withAddress(\"CAPT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" private static final Person ALBERT \u003d new PersonBuilder().withName(\"Albert\").withPhone(TEST_PHONE_FOUR)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" .withEmail(\"albert@outlook.com\").withAddress(\"PGP\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" private static final Person ADRIEL \u003d new PersonBuilder().withName(\"Adriel\").withPhone(TEST_PHONE_FIVE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" .withEmail(\"adriel@gmail.com\").withAddress(\"UTown\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" private static final Person TAN_AH_KOW \u003d new PersonBuilder().withName(\"Tan Ah Kow\").withPhone(TEST_PHONE_SIX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" .withEmail(\"tak@hotmail.com\").withAddress(\"Woodlands MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" private static final Person BART_BILL \u003d new PersonBuilder().withName(\"Bartholomew Billiams\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" .withPhone(TEST_PHONE_SEVEN).withEmail(\"barbill@gmail.com\").withAddress(\"United Kingdom\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" private final AddressBookBuilder testAB \u003d new AddressBookBuilder();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" private Model testModel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" @BeforeEach","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" public void setUp() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(AIKEN)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" .withPerson(ALEX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" .withPerson(ALICE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" .withPerson(ALBERT)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" .withPerson(ADRIEL)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":" .withPerson(TAN_AH_KOW)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" .withPerson(BART_BILL);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" // Test for identifying no duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_noDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" // Test for identifying duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_withDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" // Test for identifying correct duplicate","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":" public void identify_correct_duplicate() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" if (person.getPhone().equals(new Phone(TEST_PHONE_TWO))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"valhrd"},"content":" assertTrue(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates_withNoDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"valhrd"},"content":" assertFalse(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":135}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" // Single tag, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" // Test with whitespace only preamble and all fields present","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" // Multiple tags, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" // Test with multiple tags, financial info, and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" // zero tags, no financial info or social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFinancialInfo(\"\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":186,"appleshill":21}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"frymash"},"content":" public void parseCommand_export() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"frymash"},"content":" // TODO: softcode \"format/csv\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"frymash"},"content":" assertTrue(parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\") instanceof ExportCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithValidFormat() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"frymash"},"content":" ExportCommand command \u003d (ExportCommand) parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"frymash"},"content":" assertEquals(new ExportCommand(\"csv\"), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithInvalidFormat() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"frymash"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(ExportCommand.COMMAND_WORD + \" foobar\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"frymash":18,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" // financial info","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(VALID_FINANCIAL_INFO_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"appleshill"},"content":" // social media handle","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_SOCIAL_MEDIA_HANDLE + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":206,"appleshill":25}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for empty input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for varying number of space, 1 input and 2 inputs","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand expectedFilterCommand \u003d new FilterCommand(\"Alice\", \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" // multiple whitespaces between filters","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t t/friend \\t\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" // only name provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(\"Alice\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" // only tag provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(null, \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" //input with flag but no name or tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \"n/ t/\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Salary: $5000\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"@johndoe\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"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","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFinancialInfo(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithoutWhitespace_returnsFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(VALID_FINANCIAL_INFO));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithWhitespace_returnsTrimmedFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":" String financialInfoWithWhitespace \u003d WHITESPACE + VALID_FINANCIAL_INFO + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(financialInfoWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaHandle(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithoutWhitespace_returnsSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithWhitespace_returnsTrimmedSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"appleshill"},"content":" String socialMediaHandleWithWhitespace \u003d WHITESPACE + VALID_SOCIAL_MEDIA_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(socialMediaHandleWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"-":196,"appleshill":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" // different financial info -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFinancialInfo(VALID_FINANCIAL_INFO_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" // different social media handle -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", financialInfo\u003d\" + ALICE.getFinancialInfo()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" + \", socialMediaHandle\u003d\" + ALICE.getSocialMediaHandle() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"appleshill":21}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsCorrectNumberOfPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" assertEquals(6, samplePersons.length);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsValidPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" for (Person person : samplePersons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getPhone());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getAddress());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_containsExpectedPerson() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new Person(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" SampleDataUtil.getTagSet(\"friends\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" );","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedPerson, samplePersons[0]);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Good credit score, low debt\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"geoff_345\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullFinancialInfo_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, null, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullSocialMediaHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"appleshill":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo((person.getFinancialInfo()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(handle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_FINANCIAL_INFO \u003d \"Good credit history\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_SOCIAL_MEDIA_HANDLE \u003d \"alice_p\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_TAG \u003d \"^\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" tags.add(new Tag(DEFAULT_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d DEFAULT_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d DEFAULT_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d personToCopy.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d personToCopy.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withFinancialInfo(String financialInfo) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withSocialMediaHandle(String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" return new Person(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"appleshill":27}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_FINANCIAL_INFO + person.getFinancialInfo() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_HANDLE + person.getSocialMediaHandle() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" descriptor.getFinancialInfo().ifPresent(info -\u003e sb.append(PREFIX_FINANCIAL_INFO).append(info).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" descriptor.getSocialMediaHandle().ifPresent(handle -\u003e sb.append(PREFIX_SOCIAL_MEDIA_HANDLE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .append(handle).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"appleshill":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Good credit history\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"alice_p\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Moderate debt\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"benson_meier\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"carl_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"daniel_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"elle_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"fiona_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"george_b\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"hoon_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"ida_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":67,"appleshill":51}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ is an address book for salespeople to store sales-related information about their clients.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ can...","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"* Consolidate information about clients from multiple sources.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"* Provide an overview of all clients and offers options to visualise information about specific client groups, especially those that they need to prioritise to optimise their sales.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"* This project is based on the **[AddressBook-Level3](https://se-education.org/addressbook-level3)** project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":7,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"### Eliot Snodgrass","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"\u003cimg src\u003d\"images/appleshill.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":"[[github](https://github.com/appleshill)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"### Arvind Natarajan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"\u003cimg src\u003d\"images/diegotheexplorar.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"[[github](https://github.com/DiegoTheExplorar)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"[[portfolio](www.linkedin.com/in/arvind-natarajan-65aa77290)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":"* Responsibilities: I make sure codebase is well documented","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":"### Valentin Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"\u003cimg src\u003d\"images/valhrd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":"[[github](http://github.com/valhrd)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":"### Isaac Chan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":"\u003cimg src\u003d\"images/frymash.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":"[[github](http://github.com/frymash)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"RyanWarwick"},"content":"### Ryan Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"RyanWarwick"},"content":"\u003cimg src\u003d\"images/github_ryanwarwick.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"RyanWarwick"},"content":"[[github](http://github.com/RyanWarwick)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"RyanWarwick"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"RyanWarwick"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"frymash":5,"RyanWarwick":5,"DiegoTheExplorar":6,"valhrd":5,"-":35,"appleshill":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"RyanWarwick"},"content":"* frequently uses contacts for work (business)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"RyanWarwick"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"RyanWarwick"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"RyanWarwick"},"content":"* prioritise contacts for scheduling and work efficiency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | filter a person by tags | locate persons by category without having to go through the entire list|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | export contacts to csv | share and combine address books |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"RyanWarwick"},"content":"| `*` | user with many persons in the address book | import contacts from csv | combine and update existing address books easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"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","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input form for person\u0027s details","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"RyanWarwick"},"content":"3. User enters person details like name, phone number, email, tags etc","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook validates user input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook saves the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The user input is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"RyanWarwick"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"RyanWarwick"},"content":" * 4a2. AddressBook requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"RyanWarwick"},"content":" * 4a3. User enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"RyanWarwick"},"content":" * Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"RyanWarwick"},"content":" * Use case resumes at step 5.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Filter by tag**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to filter persons by tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input search bar","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"RyanWarwick"},"content":"3. User enters input related to key or value of a tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook shows a list of persons with matching tag key or value","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Export to CSV**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to export file to CSV","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook opens file manager for user to choose destination directory","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"RyanWarwick"},"content":"3. User enters destination directory and file name","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook outputs list of persons to CSV file in corresponding destination","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook opens destination directory containing CSV file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"RyanWarwick"},"content":"* 2a. AddressBook is unable to open file manager.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"RyanWarwick"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"RyanWarwick"},"content":"2. Should work on any _mainstream OS_ without requiring any further installation or additional platform-specific dependencies","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"RyanWarwick"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"RyanWarwick"},"content":"4. 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-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"RyanWarwick"},"content":"5. Should automatically save changes to the local data file, and it should be able to recover from unexpected shutdowns or power failures without data loss.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"RyanWarwick"},"content":"6. Should have a responsive and intuitive user interface that works well across different screen resolutions (1920 x 1080 or higher).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"RyanWarwick"},"content":"7. Should be easy to use and provide clear instructions and feedback to the user for common tasks like adding, filtering, and exporting contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"RyanWarwick"},"content":"8. Should be designed to accommodate future growth in the number of persons and additional features without major rewriting of code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"RyanWarwick"},"content":"9. Should not store or transmit sensitive data insecurely.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"RyanWarwick"},"content":"10. Should be modular and easy to test to support automated unit testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"RyanWarwick"},"content":".","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"RyanWarwick"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"appleshill"},"content":"* **Command-line Interface (CLI)**: A text-based user interface where the user interacts with the application by typing commands, as opposed to a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"appleshill"},"content":"* **Typical Usage**: The expected day-to-day usage of the application by the target user, which should not cause significant performance degradation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"appleshill"},"content":"* **Above-average Typing Speed**: A typing speed that is higher than the average user, allowing the user to input commands and data more efficiently.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"RyanWarwick"},"content":"* **Platform-specific dependencies**: Additional software required to run the application due to differences in Mainstream OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"RyanWarwick"},"content":"* **Local data file**: File stored on and only on the user\u0027s computer/device running the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"RyanWarwick"},"content":"* **Sensitive Data**: Data in any form (often text) that may harm the user or persons if exposed to unwanted parties (e.g. financial data, credit card info)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"RyanWarwick"},"content":"* **File Manager**: OS-specific software that allows user to view and manage (create, delete etc) files on their computer/device. Often comes pre-installed as part of the OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"RyanWarwick"},"content":"* **CSV**: Type of format of file that stores data in an ordered fashion using rows and columns. Often used in third-party spreadsheet software such as Microsoft Excel.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"RyanWarwick"},"content":"* **Tag**: Form of text-based labelling to categorise persons or data for organisation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"RyanWarwick"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"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","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"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","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"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","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"RyanWarwick":87,"-":391,"appleshill":3}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eBA€\u003c/a\u003e","lastModifiedDate":"2024-09-14","isFullCredit":false},{"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-09-29","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-W14-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":66}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" new DuplicatePhoneTagger().tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"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","isFullCredit":false},{"lineNumber":74,"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","isFullCredit":false},{"lineNumber":75,"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"valhrd":2,"-":186}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":87}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"Annual premium of $1200 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"@jdoe3\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":82,"appleshill":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":69}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" + \"...\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":" String updatedFinancialInfo \u003d editPersonDescriptor.getFinancialInfo().orElse(personToEdit.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" String updatedSocialMediaHandle \u003d editPersonDescriptor.getSocialMediaHandle()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" .orElse(personToEdit.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" updatedFinancialInfo, updatedSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"appleshill"},"content":" setFinancialInfo(toCopy.financialInfo);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"appleshill"},"content":" setSocialMediaHandle(toCopy.socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":" public void setFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d info;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(financialInfo);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" public void setSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d handle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(financialInfo, otherEditPersonDescriptor.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(socialMediaHandle, otherEditPersonDescriptor.socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"appleshill"},"content":" .add(\"financial info\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"appleshill"},"content":" .add(\"social media handle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":238,"appleshill":37}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":" * Exports the address book in a specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":" * Currently, BA€ can export the address book as a CSV file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Export: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" + \": Exports the address book in CSV format. \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" + \"format/csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"Export command not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" private final String format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" * Constructs a ExportCommand instance (TODO: supplement JavaDoc stub)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" * @param format the file format of the file to be exported (this should be \".csv\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" public ExportCommand(String format) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" requireAllNonNull(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" this.format \u003d format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" throw new CommandException(String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":" if (!(other instanceof ExportCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":" ExportCommand e \u003d (ExportCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":" return format.equals(e.format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":52}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" * Filters the contact list based on name and/or tags.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" + \": Filters the contact list by name and/or tags.\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Parameters: [n/NAME] [t/TAG]\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Example: \" + COMMAND_WORD + \" n/John t/client\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_NO_CONTACT_FOUND \u003d \"No contacts match the filter criteria.\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" * Class that handles FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean nameMatches \u003d name \u003d\u003d null || name.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getName().toString().toLowerCase().contains(name.toLowerCase());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean tagMatches \u003d tagName \u003d\u003d null || tagName.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getTags().stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":" return nameMatches","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" \u0026\u0026 tagMatches;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" };","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(MESSAGE_NO_CONTACT_FOUND);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(constructSuccessMessage(this.name, this.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" * Dynamically produced the success message based on the name and tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" public static String constructSuccessMessage(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" StringBuilder messageBuilder \u003d new StringBuilder(\"Displaying filtered results: \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" if (name !\u003d null \u0026\u0026 !name.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Name: \").append(name).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" if (tagName !\u003d null \u0026\u0026 !tagName.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Tag: \").append(tagName).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" return messageBuilder.toString().trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand otherCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isNameEqual \u003d (name \u003d\u003d null \u0026\u0026 otherCommand.name \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" || (name !\u003d null \u0026\u0026 name.equals(otherCommand.name));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isTagNameEqual \u003d (tagName \u003d\u003d null \u0026\u0026 otherCommand.tagName \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" || (tagName !\u003d null \u0026\u0026 tagName.equals(otherCommand.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" return isNameEqual \u0026\u0026 isTagNameEqual;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" .toString();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":103}},{"path":"src/main/java/seedu/address/logic/handler/DuplicatePhoneTagger.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":" * Tags people that share the same phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTagger {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":" public static final String DUPLICATE_PHONE_TAG_NAME \u003d \"DuplicatePhone\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":" private static final Tag DUPLICATE_TAG \u003d new Tag(DUPLICATE_PHONE_TAG_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":" private final HashMap\u003cPhone, Integer\u003e phoneFrequencies \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" * Uses the model to update the person list based on duplicate phone numbers","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" * @param model that represents the current state of the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" public void tagPhoneDuplicates(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" updatePersonsList(model, persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" * Counts and stores the frequency of each phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" * @param persons the list of persons in the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" public void updateFrequenciesOfPhones(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" clearFrequencies();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.put(person.getPhone(), phoneFrequencies.getOrDefault(person.getPhone(), 0) + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" * Checks if there exists a duplicate phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" * @return true if there is a duplicate, else false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":" public boolean isDuplicatePresent() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" for (Phone phone : phoneFrequencies.keySet()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate(phone)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" public boolean isPhoneDuplicate(Phone phone) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" return phoneFrequencies.getOrDefault(phone, 0) \u003e 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void clearFrequencies() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" private void updatePersonsList(Model model, List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" for (Person personToUpdate : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d personToUpdate.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" boolean isPhoneDuplicate \u003d isPhoneDuplicate(phone);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" Person updatedPerson \u003d updatePerson(personToUpdate, isPhoneDuplicate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":" private Person updatePerson(Person person, boolean isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" String financialInfo \u003d person.getFinancialInfo();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" String socialMediaHandle \u003d person.getSocialMediaHandle();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" newTags.addAll(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":" newTags.add(DUPLICATE_TAG);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" newTags.removeIf(tag -\u003e tag.equals(DUPLICATE_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" return new Person(name, phone, email, address, newTags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":96}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" // Optional","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" String financialInfo \u003d argMultimap.getValue(PREFIX_FINANCIAL_INFO).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle \u003d argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":55,"appleshill":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" return new ExportCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"frymash":4,"DiegoTheExplorar":4,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_FINANCIAL_INFO \u003d new Prefix(\"fi/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_HANDLE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" public static final Prefix PREFIX_EXPORT_FORMAT \u003d new Prefix(\"format/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"frymash":1,"-":14,"appleshill":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" PREFIX_TAG, PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_FINANCIAL_INFO).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setFinancialInfo(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseFinancialInfo(argMultimap.getValue(PREFIX_FINANCIAL_INFO).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setSocialMediaHandle(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseSocialMediaHandle(argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"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","isFullCredit":false},{"lineNumber":83,"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":82,"appleshill":14}},{"path":"src/main/java/seedu/address/logic/parser/ExportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":" * Parses input commands and creates a new ExportCommand object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"public class ExportCommandParser implements Parser\u003cExportCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" private static final Pattern EXPORT_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(format/(?\u003cformat\u003e\\\\S+))\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" * Parses the given {@code String} of arguments in the context of the ExportCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" * and returns an ExportCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" public ExportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":" final Matcher matcher \u003d EXPORT_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" // Extract the format from the input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" String format \u003d matcher.group(\"format\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" if ((format \u003d\u003d null || format.isEmpty())) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" return new ExportCommand(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":39}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses input for filter and creates an instance of FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" //regex to filter the input to extract NAME and/or TAG","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" private static final Pattern FILTER_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(n/(?\u003cname\u003e\\\\S+))?\\\\s*(t/(?\u003ctag\u003e\\\\S+))?\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" final Matcher matcher \u003d FILTER_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" // Extract the name and tag from the input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" String name \u003d matcher.group(\"name\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" String tag \u003d matcher.group(\"tag\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" if ((name \u003d\u003d null || name.isEmpty()) \u0026\u0026 (tag \u003d\u003d null || tag.isEmpty())) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommand(name, tag);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":41}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String financialInfo}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String financialInfo} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" public static String parseFinancialInfo(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String socialMediaHandle}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String info} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"appleshill"},"content":" public static String parseSocialMediaHandle(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"appleshill":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" requireAllNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" public String getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" return financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" public String getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" return socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 financialInfo.equals(otherPerson.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 socialMediaHandle.equals(otherPerson.socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" return Objects.hash(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" .add(\"financialInfo\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" .add(\"socialMediaHandle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":114,"appleshill":20}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}^]+\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":61,"appleshill":1}},{"path":"src/main/java/seedu/address/model/tag/TagField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"/* import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"public class TagField {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag field key and value should be alphanumeric\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" public final String key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public TagField(String key, String value) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" requireNonNull(key);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(key), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":" public static boolean isValidTagField(String test) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" if (!(other instanceof TagField)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" TagField otherTagField \u003d (TagField) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" return key.equals(otherTagField.key) \u0026\u0026 value.equals(otherTagField.value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" return (key + value).hashCode();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" return key + \":\" + value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \"Income category: $60,000 - $80,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \"bernice_yu\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \"Annual auto insurance premium: $800\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \"charlotte_o\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" \"Income category: $40,000 - $60,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" \"david_li\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"Annual home insurance premium: $950\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \"irfan_ibrahim\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \"Income category: $80,000 - $100,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \"roy_b\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"financialInfo\") String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"socialMediaHandle\") String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d source.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d source.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" if (financialInfo \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" final String modelFinancialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" if (socialMediaHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"appleshill"},"content":" final String modelSocialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" modelFinancialInfo, modelSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" private Label financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" private Label socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" financialInfo.setText(person.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" socialMediaHandle.setText(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" if (tag.tagName.equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" label.setId(\"duplicate\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" });","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":8,"-":58,"appleshill":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":" \u003cVBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\" Enter a command below:\" styleClass\u003d\"command-label\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" styleClass\u003d\"blue-text-field\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"-":7,"appleshill":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"appleshill"},"content":"/* #commandTextField {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"appleshill"},"content":".blue-text-field {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"appleshill"},"content":" -fx-background-color: rgba(0, 0, 51, 0.3);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"appleshill"},"content":" -fx-highlight-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"appleshill"},"content":" -fx-padding: 5 10 5 10; /* Top Right Bottom Left */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"appleshill"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"appleshill"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"appleshill"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"appleshill"},"content":".blue-text-field:focused {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"appleshill"},"content":" -fx-background-color: rgba(0, 0, 102, 0.35);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"appleshill"},"content":".command-label {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"appleshill"},"content":" -fx-padding: 0 0 5 0;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"appleshill"},"content":" -fx-letter-spacing: 0.1em;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"appleshill"},"content":" -fx-vgap: 9;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"appleshill"},"content":" -fx-background-color: #ff9d00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"appleshill"},"content":" -fx-padding: 4 4 4 4;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"appleshill"},"content":" -fx-border-radius: 5;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"appleshill"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"appleshill"},"content":" -fx-margin: 9 0 9 0;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"valhrd"},"content":"#tags .label#duplicate {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"valhrd"},"content":" -fx-background-color: #a1ae00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"appleshill"},"content":".app-name-container {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"appleshill"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"appleshill"},"content":" -fx-padding: 5 10 5 10;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"appleshill"},"content":".app-name {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"appleshill"},"content":" -fx-font-weight: bold !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"appleshill"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"appleshill"},"content":".app-name .text {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"appleshill"},"content":" -fx-fill: white !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"appleshill"},"content":".app-name HBox Text.euro {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"appleshill"},"content":" -fx-fill: #4a86e8 !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":345,"appleshill":50}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"-":43,"appleshill":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" title\u003d\"BA€\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" \u003cImage url\u003d\"@/images/address_book_33.png\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" \u003cHBox styleClass\u003d\"app-name-container\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \u003cLabel styleClass\u003d\"app-name\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \u003cgraphic\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\"BA\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cText styleClass\u003d\"euro\" text\u003d\"€\" fill\u003d\"#4a86e8\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \u003c/graphic\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Filter\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Filter by Name\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Filter by Tag\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Sort\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Sort by Name\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Sort by Tag\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Export\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Export to CSV\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"-":57,"appleshill":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"financialInfo\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$financial info\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"socialMediaHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$socialMediaHandle\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":36,"appleshill":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" \u003cHBox styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\"Contacts source:\" styleClass\u003d\"status-label\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" styleClass\u003d\"status-value\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false}],"authorContributionMap":{"-":11,"appleshill":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"appleshill":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"-":200,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_AMY \u003d \"$1200 income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_BOB \u003d \"No income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_AMY \u003d \"Amy_A\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_BOB \u003d \"Bob_B\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" public static final String FINANCIAL_INFO_DESC_AMY \u003d \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" public static final String SOCIAL_MEDIA_HANDLE_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_HANDLE","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"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","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":128,"appleshill":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", financial info\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getFinancialInfo().orElse(null) + \", social media handle\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getSocialMediaHandle().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.ExportCommand.MESSAGE_ARGUMENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" public void execute() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" final String format \u003d \"csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" assertCommandFailure(new ExportCommand(format), model, String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" final ExportCommand standardCommand \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" final String differentFormat \u003d \"pdf\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" ExportCommand commandWithSameValues \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" // different export format -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ExportCommand(differentFormat)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":45}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" private Model model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" @BeforeEach","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" public void setUp() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(null, \"second\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using name only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using tag only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_tagKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for fitlering usign both","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameAndTagKeywords_personFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for when there is no one after filtering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_noMatchingNameOrTag_allPersonsReturned() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.MESSAGE_NO_CONTACT_FOUND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Damith\", \"2103\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case to test parital string fitlering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_partialNameMatch_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterCommand \u003d new FilterCommand(\"John\", \"client\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{name\u003dJohn, tagName\u003dclient}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":102}},{"path":"src/test/java/seedu/address/logic/handler/DuplicatePhoneTaggerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTaggerTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_ONE \u003d \"11111111\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_TWO \u003d \"12345678\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_THREE \u003d \"87654321\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FOUR \u003d \"23232323\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FIVE \u003d \"32323232\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SIX \u003d \"45454545\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SEVEN \u003d \"54545454\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" private static final Person AIKEN \u003d new PersonBuilder().withName(\"Aiken\").withPhone(TEST_PHONE_ONE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@gmail.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" private static final Person ALEX \u003d new PersonBuilder().withName(\"Alex\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alex@yahoo.com\").withAddress(\"Minecraft\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").withPhone(TEST_PHONE_THREE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alice@hotmail.com\").withAddress(\"CAPT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" private static final Person ALBERT \u003d new PersonBuilder().withName(\"Albert\").withPhone(TEST_PHONE_FOUR)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" .withEmail(\"albert@outlook.com\").withAddress(\"PGP\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" private static final Person ADRIEL \u003d new PersonBuilder().withName(\"Adriel\").withPhone(TEST_PHONE_FIVE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" .withEmail(\"adriel@gmail.com\").withAddress(\"UTown\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" private static final Person TAN_AH_KOW \u003d new PersonBuilder().withName(\"Tan Ah Kow\").withPhone(TEST_PHONE_SIX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" .withEmail(\"tak@hotmail.com\").withAddress(\"Woodlands MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" private static final Person BART_BILL \u003d new PersonBuilder().withName(\"Bartholomew Billiams\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" .withPhone(TEST_PHONE_SEVEN).withEmail(\"barbill@gmail.com\").withAddress(\"United Kingdom\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" private final AddressBookBuilder testAB \u003d new AddressBookBuilder();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" private Model testModel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" @BeforeEach","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" public void setUp() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(AIKEN)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" .withPerson(ALEX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" .withPerson(ALICE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" .withPerson(ALBERT)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" .withPerson(ADRIEL)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":" .withPerson(TAN_AH_KOW)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" .withPerson(BART_BILL);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" // Test for identifying no duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_noDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" // Test for identifying duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_withDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" // Test for identifying correct duplicate","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":" public void identify_correct_duplicate() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" if (person.getPhone().equals(new Phone(TEST_PHONE_TWO))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"valhrd"},"content":" assertTrue(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates_withNoDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"valhrd"},"content":" assertFalse(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":135}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" // Single tag, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" // Test with whitespace only preamble and all fields present","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" // Multiple tags, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" // Test with multiple tags, financial info, and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" // zero tags, no financial info or social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFinancialInfo(\"\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":186,"appleshill":21}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"frymash"},"content":" public void parseCommand_export() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"frymash"},"content":" // TODO: softcode \"format/csv\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"frymash"},"content":" assertTrue(parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\") instanceof ExportCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithValidFormat() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"frymash"},"content":" ExportCommand command \u003d (ExportCommand) parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"frymash"},"content":" assertEquals(new ExportCommand(\"csv\"), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithInvalidFormat() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"frymash"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(ExportCommand.COMMAND_WORD + \" foobar\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"frymash":18,"-":101}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" // financial info","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(VALID_FINANCIAL_INFO_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"appleshill"},"content":" // social media handle","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_SOCIAL_MEDIA_HANDLE + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":206,"appleshill":25}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for empty input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for varying number of space, 1 input and 2 inputs","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand expectedFilterCommand \u003d new FilterCommand(\"Alice\", \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" // multiple whitespaces between filters","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t t/friend \\t\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" // only name provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(\"Alice\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" // only tag provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(null, \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" //input with flag but no name or tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \"n/ t/\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Salary: $5000\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"@johndoe\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"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","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFinancialInfo(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithoutWhitespace_returnsFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(VALID_FINANCIAL_INFO));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithWhitespace_returnsTrimmedFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":" String financialInfoWithWhitespace \u003d WHITESPACE + VALID_FINANCIAL_INFO + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(financialInfoWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaHandle(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithoutWhitespace_returnsSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithWhitespace_returnsTrimmedSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"appleshill"},"content":" String socialMediaHandleWithWhitespace \u003d WHITESPACE + VALID_SOCIAL_MEDIA_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(socialMediaHandleWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"-":196,"appleshill":38}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" // different financial info -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFinancialInfo(VALID_FINANCIAL_INFO_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" // different social media handle -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", financialInfo\u003d\" + ALICE.getFinancialInfo()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" + \", socialMediaHandle\u003d\" + ALICE.getSocialMediaHandle() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"appleshill":21}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsCorrectNumberOfPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" assertEquals(6, samplePersons.length);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsValidPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" for (Person person : samplePersons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getPhone());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getAddress());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_containsExpectedPerson() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new Person(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" SampleDataUtil.getTagSet(\"friends\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" );","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedPerson, samplePersons[0]);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Good credit score, low debt\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"geoff_345\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullFinancialInfo_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, null, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullSocialMediaHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"appleshill":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo((person.getFinancialInfo()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(handle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"appleshill":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_FINANCIAL_INFO \u003d \"Good credit history\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_SOCIAL_MEDIA_HANDLE \u003d \"alice_p\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_TAG \u003d \"^\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" tags.add(new Tag(DEFAULT_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d DEFAULT_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d DEFAULT_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d personToCopy.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d personToCopy.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withFinancialInfo(String financialInfo) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withSocialMediaHandle(String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" return new Person(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"appleshill":27}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_FINANCIAL_INFO + person.getFinancialInfo() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_HANDLE + person.getSocialMediaHandle() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" descriptor.getFinancialInfo().ifPresent(info -\u003e sb.append(PREFIX_FINANCIAL_INFO).append(info).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" descriptor.getSocialMediaHandle().ifPresent(handle -\u003e sb.append(PREFIX_SOCIAL_MEDIA_HANDLE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .append(handle).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"appleshill":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Good credit history\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"alice_p\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Moderate debt\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"benson_meier\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"carl_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"daniel_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"elle_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"fiona_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"george_b\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"hoon_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"ida_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":67,"appleshill":51}}] diff --git a/AY2425S1-CS2103T-W14-2_tp_master/commits.json b/AY2425S1-CS2103T-W14-2_tp_master/commits.json index c6e59b42..cfe84b9f 100644 --- a/AY2425S1-CS2103T-W14-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-W14-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"frymash":[{"date":"2024-09-28","commitResults":[{"hash":"08747059b5c67a980d725f0d6baceb56b8ae9b21","isMergeCommit":false,"messageTitle":"Update AboutUs Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8d64f93bd36a280fe749d54e087025e5e0cf02c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-Isaac","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd4dc08399ad41fc9de881efb1edb66d7a2f8223","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-isaac","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"64b8dc6173f352aa6936de4a4be8e085b9fe9212","isMergeCommit":false,"messageTitle":"Create a new export command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"2e9c807ac2ea008b57b7c74c9a28d584cdc24dce","isMergeCommit":false,"messageTitle":"Hook ExportCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":25,"deletions":8}}},{"hash":"dacd962902e3c39efbf926ce89d49907ee2a1fb6","isMergeCommit":false,"messageTitle":"Make ExportCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2},"test-code":{"insertions":23,"deletions":2}}},{"hash":"ee8d1637d1e265c9f2c6f194807e66bc855ca803","isMergeCommit":false,"messageTitle":"Resolve CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":7},"test-code":{"insertions":9,"deletions":3}}},{"hash":"08246e945598ef0164222ce6c7508856e8c6630a","isMergeCommit":false,"messageTitle":"Removed ExportCommand.equals stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cf0bbefb469849383fd9529070122504c03be252","isMergeCommit":false,"messageTitle":"Implement ExportCommand.equals defintion and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":20,"deletions":1}}}]}],"RyanWarwick":[{"date":"2024-09-28","commitResults":[{"hash":"938781d86bffaa7bfd22df945944ac4aac297dc2","isMergeCommit":false,"messageTitle":"Update AboutUs for Ryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a4dcf5624e587b42f01045975b2ecadc0567517c","isMergeCommit":true,"messageTitle":"Merge pull request #22 from appleshill/update-aboutUs-eliot","messageBody":"Update AboutUs Eliot","fileTypesAndContributionMap":{}},{"hash":"cd84b5d95ee38e47e22aa0693a7cbb7d701594b9","isMergeCommit":true,"messageTitle":"Merge pull request #25 from frymash/update-aboutUs-isaac","messageBody":"Update AboutUs Isaac","fileTypesAndContributionMap":{}},{"hash":"4441167655881c0a4d84e418303796fd732e7a1b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from valhrd/branch-aboutUs-valentin","messageBody":"Update AboutUs Valentin","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"053b2e1ade16d42c762558743b182a09a07de899","isMergeCommit":false,"messageTitle":"Update user stories, use cases, non-functional requirements, glossary in docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":7}}},{"hash":"eb86266ebe2c3ddbadedcdd04c316923f6fc2984","isMergeCommit":true,"messageTitle":"Merge pull request #36 from RyanWarwick/update-development-guide","messageBody":"Update user stories, use cases, non-functional requirements, glossary…","fileTypesAndContributionMap":{}},{"hash":"7b5a05b9ed2eec97fb94eb9c8e2c6e240cb9d403","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-ryan-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea6b9380cebafcd771b4570d7ff2be2c4bc27965","isMergeCommit":true,"messageTitle":"Merge pull request #37 from RyanWarwick/add-ryan-photo","messageBody":"Add ryan photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"6b93d167531a2258a1c8bdd6e36ae6a8cb0adf87","isMergeCommit":true,"messageTitle":"Merge pull request #51 from frymash/add-csv-export","messageBody":"Add partial CSV export functionality","fileTypesAndContributionMap":{}}]}],"DiegoTheExplorar":[{"date":"2024-09-28","commitResults":[{"hash":"a0ada79527c873938c0cc895d3269bb78e973c94","isMergeCommit":false,"messageTitle":"Update AboutUs Arvind","messageBody":"Added my photo, description and links\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"ce4a29ef423f7b37ee9fb523e119c7ee279147d7","isMergeCommit":false,"messageTitle":"update-aboutUs-Arvind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"9b8d99bb94b4a268e5fb36ceba09a380d566498e","isMergeCommit":true,"messageTitle":"Merge pull request #30 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"1cd97def711607aea16a1af372ee030f8efec3e5","isMergeCommit":true,"messageTitle":"Merge pull request #32 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"4711c252b9f3f1d8ed4068c1925b9de9608ef5d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9cd78bfea16d09330cfc7ca8ba1c5d9db12d9cc","isMergeCommit":false,"messageTitle":"Update Readme Page","messageBody":"Added Java CI icon and added credits to AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":11}}},{"hash":"c455f248dc93dea143df6301933c98c20e1c059b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"b8066030e6db814d5a2dc921555aadbf24e86b75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98878fb53d8844d6b4b6de97ca02a1c9e944284","isMergeCommit":false,"messageTitle":"Add Filter","messageBody":"Added FilterCommand and FilterCommandParser and relevant test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"949c7a1f059dd8cad92b8b46e61252488f0a3012","isMergeCommit":false,"messageTitle":"End file with new line","messageBody":"Failed CI/CD so added new line EOF\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9},"test-code":{"insertions":5,"deletions":5}}},{"hash":"8901a245c9c47a2a362907bde61a5f07b9722f00","isMergeCommit":false,"messageTitle":"More Checkstyle changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"764f47a8e92083a3717fdf9e63a19b921433c666","isMergeCommit":false,"messageTitle":"More Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"5acaf701f6e370b2fb902faf0810e3357b5bf0d9","isMergeCommit":true,"messageTitle":"Merge pull request #46 from appleshill/modify-add-contact","messageBody":"Modify Add Contact","fileTypesAndContributionMap":{}},{"hash":"aee98f63163a9d6f22cda983e1c1946a6386f005","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"527bad98a2481469746b5a39b8efc73d1993f2a3","isMergeCommit":false,"messageTitle":"Fix failing test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"0b87f517d470a606e331bb5aca2cf1d0e4dbacc6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from DiegoTheExplorar/master","messageBody":"Fix test for add filter","fileTypesAndContributionMap":{}}]}],"valhrd":[{"date":"2024-09-28","commitResults":[{"hash":"11abb89431c6d06cbbf39f18f59b294c10f2f3cf","isMergeCommit":true,"messageTitle":"Merge pull request #13 from frymash/add-isaacs-photo","messageBody":"Add Isaac\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"61a82adb99728962fa839ae4e5d4575a8af97b2a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5113cd9d7fc99cedc785d328f04e6309fb4e01cf","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24c8319002ecd3f9897975df00bb62c92c672d91","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"5da95768160f2f8cadb46d608caa37cda08b8df9","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd81423e6b75e45dd9255a6031268cc947ef8bdd","isMergeCommit":true,"messageTitle":"Merge pull request #34 from DiegoTheExplorar/update-readme-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"53a36773fad6cab887331bc55e265bae0c31ae8d","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":11}}},{"hash":"5bc56ce02394357c972c2e31f719c041c72e3e78","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":39}}},{"hash":"bc18edc848bfa7513332c1bc3bf8a654e17c945e","isMergeCommit":false,"messageTitle":"Update to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"60678dbb95e0e4bd7f8eec00ed8c5a2d3615107c","isMergeCommit":false,"messageTitle":"Add unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":46},"test-code":{"insertions":96,"deletions":0}}},{"hash":"f786769d242bdf2239da8f7c8f0cef436ce6eeca","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":10}}},{"hash":"5269aa5bfda0f4704bc30bed01e3547c1f4920fc","isMergeCommit":false,"messageTitle":"Update unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"338badaf5c90eb1805a26970af367501b14c044e","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":19}}},{"hash":"fc24f5eb9b6183119e6b8d2eab34dcd1e94e405c","isMergeCommit":false,"messageTitle":"Fix unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":6,"deletions":6}}},{"hash":"127e43dd996ef61c605dac42c81d4558b87be680","isMergeCommit":true,"messageTitle":"Merge pull request #50 from appleshill/master","messageBody":"Change for default tag","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"37a419626663cfb57ea062bbae92c2b546cbd98a","isMergeCommit":false,"messageTitle":"Colour code DuplicatePhone tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"512488fc67547ae49248890fe60321fdc3bd5067","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"71227cc7456d7b9ff19982fa13bb347fdacf57b7","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5cfae6f87772e4d946fbad7b81ff7b9f64666491","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"8318751b3d95ff12ce5c6b1205b80b88642a69d1","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"ba745d7054017418cb1045d803b41041bd582055","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"90325efba7fecab2673755a2c53a95df673ff17d","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}}]}],"appleshill":[{"date":"2024-09-28","commitResults":[{"hash":"25a5cad44b3018111ffbc1468adda4463494025f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"1f496b73c7dc719394fdd49ac8aec0a459b94bc6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from RyanWarwick/update-aboutus-ryan","messageBody":"Update AboutUs Ryan","fileTypesAndContributionMap":{}},{"hash":"4468f12f316ef082e42a805ef471be3f3b69472a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from DiegoTheExplorar/update-aboutUs-arvind","messageBody":"Update about us arvind","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"03644266eb0e37308cc79107e226e6af69818d7f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e3df5d3026193a39b375e2da367bedf440528e62","isMergeCommit":true,"messageTitle":"Merge pull request #33 from appleshill/update-dev-guide","messageBody":"Update the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c3e2ac87e3ce636f92aaebaccaeb63f8f6930e72","isMergeCommit":false,"messageTitle":"Modify add and edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":31},"test-code":{"insertions":155,"deletions":30}}}]},{"date":"2024-10-06","commitResults":[{"hash":"3b146be796e2905381fd260a1e196d6f721d5503","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"15e7c2d141d106193604b19b3fc823f5ea13b16f","isMergeCommit":false,"messageTitle":"Make some test changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":14}}},{"hash":"aa1eb7d4ae9ad5a317c77bcc94d2e53dd44b1ea1","isMergeCommit":false,"messageTitle":"More checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"d98b5b7d3aac1748c85cbc34ce5a558d09aa6bdd","isMergeCommit":false,"messageTitle":"Remove unnecessary file for codecov reasons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"3a05b8701bc0428c2c4e6feed1c9c3a1b8258b8b","isMergeCommit":false,"messageTitle":"Improve tests for codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":112,"deletions":2}}},{"hash":"2585bf310f02b3f1fc15e960943b3de6a6fb0e5e","isMergeCommit":false,"messageTitle":"Fix code to pass tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"c4d755a1622a7db3c02b78f1af8acebb71afe2d7","isMergeCommit":false,"messageTitle":"Modify Persons to resolve tag issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"15392b4196724c6ca15ea45adca54120ebfbb36a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from DiegoTheExplorar/add-filter","messageBody":"Add filter","fileTypesAndContributionMap":{}},{"hash":"19a20c3f5dea0011313084b7846804e2d029060e","isMergeCommit":true,"messageTitle":"Merge pull request #47 from valhrd/add-duplicate-detection","messageBody":"Add Duplicate Detection","fileTypesAndContributionMap":{}},{"hash":"9c53030fa98c1f2d8b3082bd79b8c6f89cb8b5e7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from valhrd/duplication-test-fix","messageBody":"Fix Testing for Duplicate Phones","fileTypesAndContributionMap":{}},{"hash":"ead8072c87e53d4d7087d51542a425061472d9e6","isMergeCommit":false,"messageTitle":"Change for default tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d38c7b169eef484e27e558f2114b22e9b19bd93f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from valhrd/colour-coded-duplicatePhone-tag","messageBody":"Colour code DuplicatePhone tag","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"frymash":{"docs":5,"functional-code":96,"test-code":63},"RyanWarwick":{"docs":92,"functional-code":0,"test-code":0},"DiegoTheExplorar":{"docs":13,"functional-code":148,"test-code":150},"valhrd":{"docs":6,"functional-code":117,"test-code":135},"appleshill":{"docs":7,"functional-code":208,"test-code":326}},"authorContributionVariance":{"frymash":2410.5142,"RyanWarwick":383.80347,"DiegoTheExplorar":5181.622,"valhrd":9743.534,"appleshill":10012.735},"authorDisplayNameMap":{"frymash":"CS2103T-W14-2 ISAA..XUAN","RyanWarwick":"CS2103T-W14-2 RYAN.. HAN","DiegoTheExplorar":"CS2103T-W14-2 ARVI..AJAN","valhrd":"CS2103T-W14-2 HAN ..NTIN","appleshill":"CS2103T-W14-2 SNOD..ETER"}} +{"authorDailyContributionsMap":{"frymash":[{"date":"2024-09-28","commitResults":[{"hash":"08747059b5c67a980d725f0d6baceb56b8ae9b21","isMergeCommit":false,"messageTitle":"Update AboutUs Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8d64f93bd36a280fe749d54e087025e5e0cf02c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-Isaac","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd4dc08399ad41fc9de881efb1edb66d7a2f8223","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-isaac","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"64b8dc6173f352aa6936de4a4be8e085b9fe9212","isMergeCommit":false,"messageTitle":"Create a new export command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"2e9c807ac2ea008b57b7c74c9a28d584cdc24dce","isMergeCommit":false,"messageTitle":"Hook ExportCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":25,"deletions":8}}},{"hash":"dacd962902e3c39efbf926ce89d49907ee2a1fb6","isMergeCommit":false,"messageTitle":"Make ExportCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2},"test-code":{"insertions":23,"deletions":2}}},{"hash":"ee8d1637d1e265c9f2c6f194807e66bc855ca803","isMergeCommit":false,"messageTitle":"Resolve CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":7},"test-code":{"insertions":9,"deletions":3}}},{"hash":"08246e945598ef0164222ce6c7508856e8c6630a","isMergeCommit":false,"messageTitle":"Removed ExportCommand.equals stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cf0bbefb469849383fd9529070122504c03be252","isMergeCommit":false,"messageTitle":"Implement ExportCommand.equals defintion and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":20,"deletions":1}}}]}],"RyanWarwick":[{"date":"2024-09-28","commitResults":[{"hash":"938781d86bffaa7bfd22df945944ac4aac297dc2","isMergeCommit":false,"messageTitle":"Update AboutUs for Ryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a4dcf5624e587b42f01045975b2ecadc0567517c","isMergeCommit":true,"messageTitle":"Merge pull request #22 from appleshill/update-aboutUs-eliot","messageBody":"Update AboutUs Eliot","fileTypesAndContributionMap":{}},{"hash":"cd84b5d95ee38e47e22aa0693a7cbb7d701594b9","isMergeCommit":true,"messageTitle":"Merge pull request #25 from frymash/update-aboutUs-isaac","messageBody":"Update AboutUs Isaac","fileTypesAndContributionMap":{}},{"hash":"4441167655881c0a4d84e418303796fd732e7a1b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from valhrd/branch-aboutUs-valentin","messageBody":"Update AboutUs Valentin","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"053b2e1ade16d42c762558743b182a09a07de899","isMergeCommit":false,"messageTitle":"Update user stories, use cases, non-functional requirements, glossary in docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":7}}},{"hash":"eb86266ebe2c3ddbadedcdd04c316923f6fc2984","isMergeCommit":true,"messageTitle":"Merge pull request #36 from RyanWarwick/update-development-guide","messageBody":"Update user stories, use cases, non-functional requirements, glossary…","fileTypesAndContributionMap":{}},{"hash":"7b5a05b9ed2eec97fb94eb9c8e2c6e240cb9d403","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-ryan-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea6b9380cebafcd771b4570d7ff2be2c4bc27965","isMergeCommit":true,"messageTitle":"Merge pull request #37 from RyanWarwick/add-ryan-photo","messageBody":"Add ryan photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"6b93d167531a2258a1c8bdd6e36ae6a8cb0adf87","isMergeCommit":true,"messageTitle":"Merge pull request #51 from frymash/add-csv-export","messageBody":"Add partial CSV export functionality","fileTypesAndContributionMap":{}}]}],"DiegoTheExplorar":[{"date":"2024-09-28","commitResults":[{"hash":"a0ada79527c873938c0cc895d3269bb78e973c94","isMergeCommit":false,"messageTitle":"Update AboutUs Arvind","messageBody":"Added my photo, description and links\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"ce4a29ef423f7b37ee9fb523e119c7ee279147d7","isMergeCommit":false,"messageTitle":"update-aboutUs-Arvind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"9b8d99bb94b4a268e5fb36ceba09a380d566498e","isMergeCommit":true,"messageTitle":"Merge pull request #30 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"1cd97def711607aea16a1af372ee030f8efec3e5","isMergeCommit":true,"messageTitle":"Merge pull request #32 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"4711c252b9f3f1d8ed4068c1925b9de9608ef5d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9cd78bfea16d09330cfc7ca8ba1c5d9db12d9cc","isMergeCommit":false,"messageTitle":"Update Readme Page","messageBody":"Added Java CI icon and added credits to AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":11}}},{"hash":"c455f248dc93dea143df6301933c98c20e1c059b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"b8066030e6db814d5a2dc921555aadbf24e86b75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98878fb53d8844d6b4b6de97ca02a1c9e944284","isMergeCommit":false,"messageTitle":"Add Filter","messageBody":"Added FilterCommand and FilterCommandParser and relevant test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"949c7a1f059dd8cad92b8b46e61252488f0a3012","isMergeCommit":false,"messageTitle":"End file with new line","messageBody":"Failed CI/CD so added new line EOF\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9},"test-code":{"insertions":5,"deletions":5}}},{"hash":"8901a245c9c47a2a362907bde61a5f07b9722f00","isMergeCommit":false,"messageTitle":"More Checkstyle changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"764f47a8e92083a3717fdf9e63a19b921433c666","isMergeCommit":false,"messageTitle":"More Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"5acaf701f6e370b2fb902faf0810e3357b5bf0d9","isMergeCommit":true,"messageTitle":"Merge pull request #46 from appleshill/modify-add-contact","messageBody":"Modify Add Contact","fileTypesAndContributionMap":{}},{"hash":"aee98f63163a9d6f22cda983e1c1946a6386f005","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"527bad98a2481469746b5a39b8efc73d1993f2a3","isMergeCommit":false,"messageTitle":"Fix failing test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"0b87f517d470a606e331bb5aca2cf1d0e4dbacc6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from DiegoTheExplorar/master","messageBody":"Fix test for add filter","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"d91dde913273290bacb1e405cb83aa738c2130bc","isMergeCommit":true,"messageTitle":"Merge pull request #57 from appleshill/modify-frontend-to-match-mockup","messageBody":"Modify frontend to match mockup","fileTypesAndContributionMap":{}}]}],"valhrd":[{"date":"2024-09-28","commitResults":[{"hash":"11abb89431c6d06cbbf39f18f59b294c10f2f3cf","isMergeCommit":true,"messageTitle":"Merge pull request #13 from frymash/add-isaacs-photo","messageBody":"Add Isaac\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"61a82adb99728962fa839ae4e5d4575a8af97b2a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5113cd9d7fc99cedc785d328f04e6309fb4e01cf","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24c8319002ecd3f9897975df00bb62c92c672d91","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"5da95768160f2f8cadb46d608caa37cda08b8df9","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd81423e6b75e45dd9255a6031268cc947ef8bdd","isMergeCommit":true,"messageTitle":"Merge pull request #34 from DiegoTheExplorar/update-readme-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"53a36773fad6cab887331bc55e265bae0c31ae8d","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":11}}},{"hash":"5bc56ce02394357c972c2e31f719c041c72e3e78","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":39}}},{"hash":"bc18edc848bfa7513332c1bc3bf8a654e17c945e","isMergeCommit":false,"messageTitle":"Update to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"60678dbb95e0e4bd7f8eec00ed8c5a2d3615107c","isMergeCommit":false,"messageTitle":"Add unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":46},"test-code":{"insertions":96,"deletions":0}}},{"hash":"f786769d242bdf2239da8f7c8f0cef436ce6eeca","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":10}}},{"hash":"5269aa5bfda0f4704bc30bed01e3547c1f4920fc","isMergeCommit":false,"messageTitle":"Update unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"338badaf5c90eb1805a26970af367501b14c044e","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":19}}},{"hash":"fc24f5eb9b6183119e6b8d2eab34dcd1e94e405c","isMergeCommit":false,"messageTitle":"Fix unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":6,"deletions":6}}},{"hash":"127e43dd996ef61c605dac42c81d4558b87be680","isMergeCommit":true,"messageTitle":"Merge pull request #50 from appleshill/master","messageBody":"Change for default tag","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"37a419626663cfb57ea062bbae92c2b546cbd98a","isMergeCommit":false,"messageTitle":"Colour code DuplicatePhone tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"512488fc67547ae49248890fe60321fdc3bd5067","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"71227cc7456d7b9ff19982fa13bb347fdacf57b7","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5cfae6f87772e4d946fbad7b81ff7b9f64666491","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"8318751b3d95ff12ce5c6b1205b80b88642a69d1","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"ba745d7054017418cb1045d803b41041bd582055","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"90325efba7fecab2673755a2c53a95df673ff17d","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}}]}],"appleshill":[{"date":"2024-09-28","commitResults":[{"hash":"25a5cad44b3018111ffbc1468adda4463494025f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"1f496b73c7dc719394fdd49ac8aec0a459b94bc6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from RyanWarwick/update-aboutus-ryan","messageBody":"Update AboutUs Ryan","fileTypesAndContributionMap":{}},{"hash":"4468f12f316ef082e42a805ef471be3f3b69472a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from DiegoTheExplorar/update-aboutUs-arvind","messageBody":"Update about us arvind","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"03644266eb0e37308cc79107e226e6af69818d7f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e3df5d3026193a39b375e2da367bedf440528e62","isMergeCommit":true,"messageTitle":"Merge pull request #33 from appleshill/update-dev-guide","messageBody":"Update the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c3e2ac87e3ce636f92aaebaccaeb63f8f6930e72","isMergeCommit":false,"messageTitle":"Modify add and edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":31},"test-code":{"insertions":155,"deletions":30}}}]},{"date":"2024-10-06","commitResults":[{"hash":"3b146be796e2905381fd260a1e196d6f721d5503","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"15e7c2d141d106193604b19b3fc823f5ea13b16f","isMergeCommit":false,"messageTitle":"Make some test changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":14}}},{"hash":"aa1eb7d4ae9ad5a317c77bcc94d2e53dd44b1ea1","isMergeCommit":false,"messageTitle":"More checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"d98b5b7d3aac1748c85cbc34ce5a558d09aa6bdd","isMergeCommit":false,"messageTitle":"Remove unnecessary file for codecov reasons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"3a05b8701bc0428c2c4e6feed1c9c3a1b8258b8b","isMergeCommit":false,"messageTitle":"Improve tests for codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":112,"deletions":2}}},{"hash":"2585bf310f02b3f1fc15e960943b3de6a6fb0e5e","isMergeCommit":false,"messageTitle":"Fix code to pass tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"c4d755a1622a7db3c02b78f1af8acebb71afe2d7","isMergeCommit":false,"messageTitle":"Modify Persons to resolve tag issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"15392b4196724c6ca15ea45adca54120ebfbb36a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from DiegoTheExplorar/add-filter","messageBody":"Add filter","fileTypesAndContributionMap":{}},{"hash":"19a20c3f5dea0011313084b7846804e2d029060e","isMergeCommit":true,"messageTitle":"Merge pull request #47 from valhrd/add-duplicate-detection","messageBody":"Add Duplicate Detection","fileTypesAndContributionMap":{}},{"hash":"9c53030fa98c1f2d8b3082bd79b8c6f89cb8b5e7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from valhrd/duplication-test-fix","messageBody":"Fix Testing for Duplicate Phones","fileTypesAndContributionMap":{}},{"hash":"ead8072c87e53d4d7087d51542a425061472d9e6","isMergeCommit":false,"messageTitle":"Change for default tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d38c7b169eef484e27e558f2114b22e9b19bd93f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from valhrd/colour-coded-duplicatePhone-tag","messageBody":"Colour code DuplicatePhone tag","fileTypesAndContributionMap":{}},{"hash":"81615b52d76a70560dd489eee1c5337b3179bcb2","isMergeCommit":false,"messageTitle":"Modify frontend to match mockup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"frymash":{"docs":5,"functional-code":96,"test-code":63},"RyanWarwick":{"docs":92,"functional-code":0,"test-code":0},"DiegoTheExplorar":{"docs":13,"functional-code":148,"test-code":150},"valhrd":{"docs":6,"functional-code":117,"test-code":135},"appleshill":{"docs":7,"functional-code":298,"test-code":326}},"authorContributionVariance":{"frymash":2314.8315,"RyanWarwick":368.6597,"DiegoTheExplorar":4977.4976,"valhrd":9364.1875,"appleshill":9824.329},"authorDisplayNameMap":{"frymash":"CS2103T-W14-2 ISAA..XUAN","RyanWarwick":"CS2103T-W14-2 RYAN.. HAN","DiegoTheExplorar":"CS2103T-W14-2 ARVI..AJAN","valhrd":"CS2103T-W14-2 HAN ..NTIN","appleshill":"CS2103T-W14-2 SNOD..ETER"}} diff --git a/AY2425S1-CS2103T-W14-3_tp_master/authorship.json b/AY2425S1-CS2103T-W14-3_tp_master/authorship.json index 4b17edd8..a50c5019 100644 --- a/AY2425S1-CS2103T-W14-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W14-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027hallpointer.address.Main\u0027","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" archiveFileName \u003d \u0027hallpointer.jar\u0027","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":"run {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":73}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"You can reach us at the email seer[at]comp.nus.edu.sg","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"### Qin Haichen","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":"\u003cimg src\u003d\"images/qinhaichen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"[[github](https://github.com/QinHaichen12)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":"[[portfolio](team/qinhaichen12.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yuvrajaryan"},"content":"### Yuvraj Aryan Singh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yuvrajaryan"},"content":"\u003cimg src\u003d\"images/yuvrajaryan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yuvrajaryan"},"content":"[[github](http://github.com/yuvrajaryan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yuvrajaryan"},"content":"[[portfolio](team/yuvrajaryan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"### Daniel Lai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"\u003cimg src\u003d\"images/starchypotatocode.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"[[github](http://github.com/starchypotatocode)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"[[portfolio](team/starchypotatocode.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"- Responsibilities: Testing, Integration","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"### Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"\u003cimg src\u003d\"images/keithxun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"[[github](http://github.com/keithxun)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"[[portfolio](team/keithxun.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"### Tag Han","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":"\u003cimg src\u003d\"images/taggyhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":"[[github](https://github.com/taggyhan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":"[[portfolio](team/taggyhan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI, Scheduling and tracking","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":4,"taggyhan":13,"QinHaichen12":4,"starchypotatocode":6,"-":31,"keithxun":5}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":"1. Update the version number in [`MainApp.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer Developer Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"**`Main`** (consisting of classes [`Main`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/Main.java) and [`MainApp`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":"The **API** of this component is specified in [`Ui.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/Ui.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `MemberListPanel`, `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-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"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://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component, as it displays `Member` object residing in the `Model`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Logic.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/logic/Logic.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"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","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"2. 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":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a member).\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"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","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Model.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/model/Model.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"keithxun"},"content":"- stores the address book data i.e., all `Member` objects (which are contained in a `UniqueMemberList` object).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"keithxun"},"content":"- stores the currently \u0027selected\u0027 `Member` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cMember\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-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"keithxun"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Member` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Member` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Storage.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/storage/Storage.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"keithxun"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `hallpointer.address.commons` package.","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":"Step 2. The user executes `delete 5` command to delete the 5th member 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-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":"Step 3. The user executes `add n/David …​` to add a new member. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":"Step 4. The user now decides that adding the member 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-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"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","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"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","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"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","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"keithxun"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"keithxun"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"keithxun"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"keithxun"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"keithxun"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the member being deleted).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"keithxun"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"keithxun"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"keithxun"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"keithxun"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"keithxun"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"keithxun"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"keithxun"},"content":"- is a CCA leader in a NUS Hall","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"keithxun"},"content":"- is responsible for managing member participation, tracking attendance, and allocating points","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"keithxun"},"content":"- prefers streamlined solutions to minimize manual administrative work","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"keithxun"},"content":"- comfortable with both desktop and command-line interfaces (CLI)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"keithxun"},"content":"- often managing multiple responsibilities, including academic workload and hall duties","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"yuvrajaryan"},"content":"**Value proposition**: Hall Pointer empowers CCA leaders in NUS Halls to efficiently manage member tracking by streamlining participation recording, points allocation, and member information (such as room addresses). It simplifies manual data management, allowing leaders to focus on organizing activities rather than administrative tasks. Ideal for small, close-knit CCAs, it ensures quick access to updated information, enabling accurate and easy sharing of participation records with hall management or other stakeholders.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"keithxun"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"keithxun"},"content":"| -------- | --------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Explore the app using sample data | I can understand its features without manually entering data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See a guide on how to use the app | I can better understand its functionalities | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the app | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Delete all data in the app | I can start over when I make a mistake and remove sample data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Add new users to the app | I can track points for new Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Delete existing users from the app | I can stop tracking points for ex-Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Customize point allocation criteria | I can reward members based on different participation criteria | E.g., different point weights for different activities |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Add or delete points for each member | I can track the overall participation status in the CCA | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Filter the data to see members with low attendance | I can identify which members need attention | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Edit member details (e.g., name, contact) | I can keep the member database up to date | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"keithxun"},"content":"| `* *` | First-time user | Import data from an existing Google Sheets document or csv file | I can quickly upload my data without manual entry | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Automatically track attendance at each session | I don\u0027t need to manually mark attendance for each session | Using QR codes? That would need some kind of integration though, would be complicated |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without navigating multiple screens | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Set up custom attendance categories (e.g., Excused, Late) | I can categorize different types of attendance | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"keithxun"},"content":"| `* *` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Charts or graphs to visualize data |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"keithxun"},"content":"| `*` | User | Sort members by name | I can locate a member easily | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"keithxun"},"content":"| `*` | Frequent user | Automatically save changes without manual intervention | I don’t lose progress if I forget to click save | Auto-save feature |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Perform all actions using the CLI | I can interact with the app more efficiently without relying on the GUI | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Automate repetitive tasks, such as attendance updates | I can save time by reducing manual input | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"keithxun"},"content":"| `*` | User | Add notes for each member | I can track special situations or reasons for absences | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC01 - Add Member to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new member to the CCA for attendance tracking and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"1. CCA Leader inputs the `add_member` command with required details (name, room number, and telegram).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_member /name John Doe /room 4/3/301 /tele johndoe123`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered details for the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the member to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"QinHaichen12"},"content":"4. The new member is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate member is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Member John Doe already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add member operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC02 - Add Session to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new CCA session to the system for tracking attendance and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the session such as name, date, and points.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `add_session` command with session details (name, date, and points).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_session rehearsal /date 2024-09-19 /points 2`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the session to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"QinHaichen12"},"content":"4. The new session is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate session is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Session rehearsal already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add session operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC03 - Mark Member Present for a Session","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to mark a member as present for a specific CCA session.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"QinHaichen12"},"content":"1. The member and session must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `mark_present` command with the member name and session name.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"QinHaichen12"},"content":" - Example: `mark_present John Doe /session volleyball training`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer records the attendance and displays a success message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"QinHaichen12"},"content":" - `Attendance recorded for John Doe on volleyball training.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"QinHaichen12"},"content":"4. The updated attendance is reflected in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member or session not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message indicating the missing entity.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"QinHaichen12"},"content":" - `Failed to log attendance: member or session does not exist.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the mark present operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC04 - Update Member Information","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"starchypotatocode"},"content":"**Description**: This use case allows a CCA leader to update the details of an existing member, such as room number, telegram, or tags.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"QinHaichen12"},"content":"1. The member to be updated must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `update_member` command with the member name and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"QinHaichen12"},"content":" - Example: `update_member John Doe /room 9/10/203 /tag friend`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer updates the member information and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"QinHaichen12"},"content":" - `Member John Doe\u0027s room updated to 9/10/203.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"QinHaichen12"},"content":"4. The updated member information is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"QinHaichen12"},"content":" - `Error: Member with the given name could not be found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the update operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC05 - View All Members","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to view a list of all members in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"QinHaichen12"},"content":"None.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `list_members` command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer retrieves and displays all members in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"QinHaichen12"},"content":"- **2a. No members found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"QinHaichen12"},"content":" - `Error: No members found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"starchypotatocode"},"content":"2. Should be able to hold up to 1000 members without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"keithxun"},"content":"4. The application should respond to user commands within 2 seconds under normal operating conditions.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"keithxun"},"content":"5. The user interface should be intuitive enough for a first-time user to understand basic functionalities without external help.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"keithxun"},"content":"6. While primarily designed for one user, the application should be able to handle up to 1000 members efficiently, with room for future enhancements.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"keithxun"},"content":"7. The application should have a success rate of at least 95% for command executions, ensuring that most user actions are completed successfully without errors.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"keithxun"},"content":"8. Code should be organized and documented to facilitate future updates or modifications.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"keithxun"},"content":"9. The application should run seamlessly across different operating systems without requiring extensive configuration.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"taggyhan"},"content":"1. **Hall Pointer:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"taggyhan"},"content":" A desktop application used by CCA leaders in NUS Halls to track hall points, manage member participation, attendance, and allocate points. It is optimized for Command Line Interface (CLI) usage but also includes a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"taggyhan"},"content":"2. **CLI (Command Line Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"taggyhan"},"content":" A text-based interface where users interact with the application by typing commands, making it efficient for users comfortable with fast typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"taggyhan"},"content":"3. **GUI (Graphical User Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"taggyhan"},"content":" A visual interface that allows users to interact with the application using graphical components like buttons and menus, in addition to CLI commands.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"taggyhan"},"content":"4. **Member:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"starchypotatocode"},"content":" A participant or member of a CCA (Co-Curricular Activity) in NUS Halls, whose details are tracked in the Hall Pointer system (e.g., name, telegram, points, and attendance).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"taggyhan"},"content":"5. **Points Allocation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"taggyhan"},"content":" The process of awarding hall points to members based on their participation in activities. CCA leaders can customize the criteria for point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"taggyhan"},"content":"6. **CCA (Co-Curricular Activity):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"taggyhan"},"content":" A club or activity within an NUS Hall that tracks member participation and points. Hall Pointer helps CCA leaders manage their members more efficiently.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"taggyhan"},"content":"7. **Gradle:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"taggyhan"},"content":" A build automation tool used in Hall Pointer for compiling code, managing dependencies, and running tasks such as testing and creating JAR files.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"taggyhan"},"content":"8. **JUnit:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"taggyhan"},"content":" A testing framework for Java, used in Hall Pointer to run automated tests on individual units of the system and ensure code correctness.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"taggyhan"},"content":"9. **ShadowJar:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"taggyhan"},"content":" A Gradle task that generates a fat JAR file, which bundles the application and its dependencies into a single JAR for distribution.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"taggyhan"},"content":"10. **GitHub Actions:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"taggyhan"},"content":" A Continuous Integration (CI) tool integrated with GitHub to automatically test and build the Hall Pointer application whenever new changes are pushed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"taggyhan"},"content":"11. **Codecov:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"taggyhan"},"content":" A tool that tracks code coverage during testing. It helps assess how much of the Hall Pointer code is covered by tests, encouraging improvements to the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"taggyhan"},"content":"12. **Fat JAR:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"taggyhan"},"content":" A JAR file that contains the entire application along with all its dependencies, allowing Hall Pointer to run as a standalone application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"taggyhan"},"content":"13. **POSIX-compliant OS:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"taggyhan"},"content":" Operating systems like Linux and macOS that adhere to POSIX standards and are compatible with shell scripts used for CI tasks in Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"taggyhan"},"content":"14. **Tag:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"taggyhan"},"content":" Labels or categories assigned to members in the Hall Pointer system (e.g., `leader`, `active`, `inactive`). Tags help classify and manage members more easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"taggyhan"},"content":"15. **Undo/Redo Feature:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"taggyhan"},"content":" A proposed feature that allows users to revert or redo changes in Hall Pointer, enabling easy correction of mistakes.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"taggyhan"},"content":"16. **Versioned AddressBook:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"taggyhan"},"content":" Refers to a version of the Hall Pointer system where the state of member data is saved at specific intervals to allow undo/redo functionality.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"taggyhan"},"content":"17. **Test Coverage:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"taggyhan"},"content":" A metric that measures how much of the Hall Pointer codebase is covered by tests, indicating the effectiveness and thoroughness of the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"taggyhan"},"content":"18. **User Preferences:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"taggyhan"},"content":" Settings such as window size and logging levels that can be customized by users and saved in a configuration file (`config.json`) for Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"taggyhan"},"content":"19. **Configuration File (`config.json`):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"taggyhan"},"content":" A JSON file that stores user preferences and application settings for Hall Pointer, including file locations and logging levels.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"taggyhan"},"content":"20. **Build Automation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"taggyhan"},"content":" The process of automating the compilation, testing, and packaging of Hall Pointer using Gradle to ensure consistent builds across different environments.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"taggyhan"},"content":"21. **Continuous Integration (CI):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"taggyhan"},"content":" A practice used in Hall Pointer, powered by GitHub Actions, where tests and checks are run automatically to verify the integrity of new code changes before merging.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"taggyhan"},"content":"22. **Unit Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"taggyhan"},"content":" A test that targets individual components or methods in the Hall Pointer system to ensure they function correctly in isolation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"taggyhan"},"content":"23. **Integration Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"taggyhan"},"content":" A test that checks how different components in Hall Pointer interact with each other, ensuring they work together as expected.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"taggyhan"},"content":"24. **Hybrid Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"taggyhan"},"content":" A combination of unit and integration testing that checks both the individual components and their interactions in the Hall Pointer system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"taggyhan"},"content":"25. **Command:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"taggyhan"},"content":" A typed instruction input by the user in the CLI to perform an action in Hall Pointer, such as adding members, editing details, or tracking points (e.g., `add`, `list`, `delete`).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"keithxun"},"content":"testers are expected to do more _exploratory_ testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"starchypotatocode"},"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-09-30","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"starchypotatocode"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"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","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"starchypotatocode"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"starchypotatocode"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"starchypotatocode"},"content":"1. Deleting a member while all members are being shown","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"starchypotatocode"},"content":" 1. Prerequisites: List all members using the `list` command. Multiple members in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"starchypotatocode"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":610,"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","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"starchypotatocode"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"starchypotatocode"},"content":" Expected: No member is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"starchypotatocode"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"taggyhan":72,"QinHaichen12":149,"starchypotatocode":31,"-":288,"keithxun":85}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer User Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"1. Download the latest `.jar` file from [here](https://ay2425s1-cs2103t-w14-3.github.io/releases).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar hallpointer.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * `add n/John Doe tg/98765432 r/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" e.g. if the command specifies `n/NAME tg/TELEGRAM`, `tg/TELEGRAM n/NAME` is also acceptable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"### Adding a member: `add`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":"Adds a member to the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":"Format: `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"**Tip:** A member can have any number of tags (including 0)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":"* `add n/John Doe tg/98765432 r/John street, block 123, #01-01`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":"* `add n/Betsy Crowe t/friend r/Newgate Prison tg/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":"### Listing all members : `list`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"Shows a list of all members in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"### Editing a member : `edit`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":"Edits an existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":"Format: `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":"* Edits the member at the specified `INDEX`. The index refers to the index number shown in the displayed member list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":"* When editing tags, the existing tags of the member will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"* You can remove all the member’s tags by typing `t/` without","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":"* `edit 1 tg/91234567 n/Johnson Doe` Edits the telegram and name of the 1st member to be `91234567` and `Johnson Doe` respectively.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd member to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"### Locating members by name: `find`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":"Finds members whose names contain any of the given keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"* Members matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member : `delete`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"Deletes the specified member from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":"* Deletes the member at the specified `INDEX`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":"* The index refers to the index number shown in the displayed member list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":"* `list` followed by `delete 2` deletes the 2nd member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st member in the results of the `find` command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"starchypotatocode"},"content":"**Add** | `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho tg/22224444 r/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":"**Edit** | `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee tg/99998888`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":174}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eHallPointer\u003c/a\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/ay2425s1-cs2103t-w14-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":66}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteMember(p)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *-right-\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -right-\u003e Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Member -up-\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"DeleteCommand -\u003e Model : deleteMember(1)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"Class Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Class Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *--\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList --\u003e \"~* all\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Address","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":"Member -[hidden]up--\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -[hidden]right-\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"Name -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"Telegram -[hidden]right-\u003e Address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"ModelManager --\u003e \"~* filtered\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":37}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"Class JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"JsonAdaptedMember --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"Class MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"MainWindow *-down-\u003e \"1\" MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -down-\u003e \"*\" MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":"MemberCard --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"MemberCard ..\u003e Model","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"ecp -\u003e ec ++: index, editMemberDescriptor","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":" title: \"HallPointer\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"# HallPointer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"[![codecov](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"### Key Features","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"- **Manage Members:** Add, edit, delete, and view CCA members easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"- **Track Attendance:** Record participation in events and track members with low attendance.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- **Allocate Points:** Customize and track hall points based on member participation in activities.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- **Efficient CLI-based Commands:** Perform tasks quickly using CLI commands for users familiar with typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Undo/Redo Support:** A proposed feature for reverting changes to ensure accurate management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":"### Getting Started","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- If you are a user interested in using **HallPointer**, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start) for instructions on how to set up and begin using the application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- If you are interested in contributing to or developing **HallPointer**, the [**Developer Guide**](DeveloperGuide.md) provides detailed technical information and instructions to help you get started.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"### Acknowledgements","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Libraries used:**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - [JavaFX](https://openjfx.io/) - for building the graphical user interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" - [Jackson](https://github.com/FasterXML/jackson) - for JSON processing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" - [JUnit5](https://github.com/junit-team/junit5) - for testing the application.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"taggyhan":25,"starchypotatocode":3,"-":12}},{"path":"docs/team/keithxun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"# Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"- **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"- **Email**: [keithonghx@gmail.com](mailto:keithonghx@gmail.com)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"- **GitHub**: [https://github.com/keithxun](https://github.com/keithxun)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"## Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"**National University of Singapore**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"_Bachelor of Computing_ (Aug 2023 – Aug 2027)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"**GPA**: 4.8","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"## Achievements","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":"- **Dean\u0027s List** - AY 23/24 Sem 1","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"- **What The Hack Hackathon** – Developed a Green Web Application to Reduce Carbon Footprint","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"- **RHdev Hackathon** – Created a Web \u0026 Telegram Application for Canvas Notifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020 Publication** – Precision Ellipsometry System under A\\*STAR","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"## Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":"### Process Automation Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":"_CPF Board, Singapore_ (May 2024 – Aug 2024)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"- Developed a **UIPath script** incorporating **computer vision** and **OCR technologies** to automate access applications, saving over 100 hours annually.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"- Implemented a category sorting system using the **Mistral Model** and **LLMs**, reducing misclassification by 40%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"- Led project management for a **gamification app** for agents, overseeing requirements gathering and timeline management.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: UIPath, Python, OCR, Computer Vision, LLMs, Microsoft PowerApps","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"### Software Engineer (SWE), Project Sabai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"_YYL SOM, Singapore \u0026 Cambodia_ (Dec 2023 - Present)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- Maintained and enhanced a **biometric web application** for clinical use with a team of 21.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":"- Refactored codebase to improve performance in poor internet conditions in Cambodia and ensure future scalability.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":"- Revamped the **user interface** to improve user experience.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: React, Next.js, Tailwind CSS, Django, PostgreSQL, Vercel, New Relic, Auth0","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"### Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"*A*STAR, Singapore\\* (Jan 2019 - Feb 2020)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"- Engineered a portable **precision ellipsometry system** for use with liquids, under the guidance of Dr. Nikolai Yakovlev.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"## Publications and Presentations","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020**: Published and presented on the **Precision Ellipsometry System**, designed for portability and use with liquid samples in field settings.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"**[GitHub](https://github.com/keithxun)** | **[Email](mailto:keithonghx@gmail.com)** | **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"keithxun":60}},{"path":"docs/team/qinhaichen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"QinHaichen12"},"content":"# Qin Haichen","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"QinHaichen12"},"content":"- **HP**: 93691698","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"QinHaichen12"},"content":"- **Email**: [haichensurfs@gmail.com](mailto:haichensurfs@gmail.com)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"QinHaichen12"},"content":"- **LinkedIn profile**: [LinkedIn Profile](#)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"QinHaichen12"},"content":"- **Availability**: Available for internship Jan – Jun and May - Aug","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"QinHaichen12"},"content":"## Education","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"QinHaichen12"},"content":"### National University of Singapore","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"QinHaichen12"},"content":"**Aug 2023 - Jul 2027**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Computing in Computer Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":" - Top scorer for Data Structures and Algorithms and Programming Methodology II","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"QinHaichen12"},"content":" - Obtained top 8 in a robotics contest organized by the School of Computing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Science in Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"QinHaichen12"},"content":" - Obtained highest grade (A+) in Calculus, Linear Algebra, and Probability","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"QinHaichen12"},"content":"### NUS High School of Mathematics and Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2015 - Dec 2020**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"QinHaichen12"},"content":"- NUS High School Diploma with Honours in Chemistry, Physics, and Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"QinHaichen12"},"content":" - Graduated with a Cumulative Average Point (CAP) of 4.8/5.0","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"QinHaichen12"},"content":" - Part of the National Team for Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Maths Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"QinHaichen12"},"content":"## Projects","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"QinHaichen12"},"content":"- Collaborated with a team of four to create a mobile app with Unity engine and C# incorporating AR functionalities within 3 days and trained a Machine Learning model using YOLO_v8 for animal image recognition leveraging Python and TensorFlow.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"QinHaichen12"},"content":"- Deployed a full-stack web application on Vercel platform that enables users to create and participate in prediction challenges using Next.js for frontend and Supabase for backend database management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"QinHaichen12"},"content":"## Technical Skills","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"QinHaichen12"},"content":"- **Languages**: Java, Python, Javascript, PostgreSQL, C#, C++","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"QinHaichen12"},"content":"- **Frameworks**: React, Next.js","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"QinHaichen12"},"content":"## Work Experience","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"QinHaichen12"},"content":"### Part Time Tutor (Self-employed)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2023 - Aug 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"QinHaichen12"},"content":"- Tutored multiple students for physics and mathematics at Junior College level","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"QinHaichen12"},"content":"### Head Depot Clerk (Singapore Armed Forces)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2021 - Jan 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"QinHaichen12"},"content":"- Managed administrative processes for a depot with more than 70 people","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"QinHaichen12"},"content":"- Engineered an automated duty planning system using VBA and Power Query that streamlined scheduling for 70+ personnel, resulting in time savings of over 15 hours per week on administrative tasks.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"QinHaichen12"},"content":"### Research Intern (Cryowerx)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2019 - Oct 2019**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"QinHaichen12"},"content":"- Developed innovative solutions to mitigate RFID signal detuning caused by medium placement or material obstructions.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"QinHaichen12"},"content":"- Presented the project at Singapore Science Engineering Fair 2020, earning a Merit Award for its effectiveness in addressing complex engineering challenges related to RFID technology.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"QinHaichen12"},"content":"## Community Involvement","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"QinHaichen12"},"content":"### Trained Repair Coach (Repair Kopitiam Singapore)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2023 - Present**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"QinHaichen12"},"content":"- Trained to repair common electrical and mechanical devices","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"QinHaichen12":58,"keithxun":12}},{"path":"docs/team/taggyhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"* * * * *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"**Tan Tag Han**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"- **Email**: e0516145@u.nus.edu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"- **Phone**: 82013355","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"- **LinkedIn**: [Tag Han Tan](https://www.linkedin.com/in/tag-han-tan/)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"### Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"- **National University of Singapore (2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" - Bachelor of Computing, Computer Science","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" - Awarded Full Ride Scholarship; Stephen Riady Scholarship","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"- **NUS High School of Mathematics and Science (2015 -- 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" - High Distinction (Majors with Honors in Chemistry; Majors in Math, Physics, Biology)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" - Societies: Track \u0026 Field Team; Drama Club; Boarding School Leader; Chemistry Olympiad Team","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"### Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Raven Parthenon Education (Nov 2022 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" - Co-Founder","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" - Connected students with mentors for Olympiads/IB/IGCSE/MCAT/GAMSAT/SAT/ACT.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" - Engaged 500+ students with tutors, collaborating with various education partners.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":" - Bootstrapped Raven to annual six-figure revenue and profit within two years of launching.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- **Institute of High-Performance Computing (Nov 2022 - Jun 2023)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" - Developed loss functions in Generative Adversarial Networks for image-to-image translation networks.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" - Improved image quality metrics by 15%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"- **Bioinformatics Institute (Jun 2019 - Mar 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" - Bioinformatics Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" - Performed molecular dynamics tasks for protein-protein binding interactions in AMBER 14.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - Bronze Medal at Singapore Science and Engineering Fair and A*STAR Talent Search (Top 50 in Singapore).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":"### Clubs \u0026 Societies","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":"- **NUS Fintech Society (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Tech Lead","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" - Led a team of 5 software engineers in developing a React Native application for real estate trend analysis.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":"- **Google Developers Student Club (GDSC) NUS (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" - Technology Associate","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" - Maintenance of GDSC website, conducted seminars/workshops on ML/APIs.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":"### Honours/Certifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Google Cloud Professional Machine Learning Engineer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":"- Google Professional Data Analytics Specialization","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"- Singapore Chemistry Olympiad Silver (Top 40 in Singapore)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":"- Singapore Mathematical Olympiad Silver","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"taggyhan":56}},{"path":"docs/team/yuvrajaryan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yuvrajaryan"},"content":" title: \"Yuvraj Aryan Singh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"-":45}},{"path":"src/main/java/hallpointer/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Config;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Version;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ConfigUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.LogicManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.AddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.Ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.UiManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final Version VERSION \u003d new Version(1, 0, 0, true);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":185}},{"path":"src/main/java/hallpointer/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code s} represents a non-negative unsigned integer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * e.g. 0, 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * e.g. empty string, \"-1\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isNonNegativeUnsignedInteger(String s) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" try {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return value \u003e\u003d 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":68}},{"path":"src/main/java/hallpointer/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see hallpointer.address.model.Model#getAddressBook()","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered list of members */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":47}},{"path":"src/main/java/hallpointer/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":85}},{"path":"src/main/java/hallpointer/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.Prefix;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX \u003d \"The member index provided is invalid\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_MEMBERS_LISTED_OVERVIEW \u003d \"%1$d members listed!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" * Formats the {@code member} for display to the user.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public static String format(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" builder.append(member.getName())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getTelegram())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Room: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getRoom())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().forEach(builder::append);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":38}},{"path":"src/main/java/hallpointer/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a member to the address book. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_ROOM + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"98765432 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_ROOM + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New member added: %1$s\";","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the address book\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private final Member toAdd;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddMemberCommand to add the specified {@code Member}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand(Member member) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" toAdd \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (model.hasMember(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" model.addMember(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" return toAdd.equals(otherAddMemberCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":23,"-":58}},{"path":"src/main/java/hallpointer/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Deletes a member identified using its displayed index from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" + \": Deletes the member identified by the index number used in the displayed member list.\\n\"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DELETE_MEMBER_SUCCESS \u003d \"Deleted Member: %1$s\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand(Index targetIndex) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" model.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" return targetIndex.equals(otherDeleteMemberCommand.targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":55}},{"path":"src/main/java/hallpointer/address/logic/commands/EditMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" * Edits the details of an existing member in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the member identified \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" + \"by the index number used in the displayed member list. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" + \"[\" + PREFIX_ROOM + \"ADDRESS] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"91234567 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EDIT_MEMBER_SUCCESS \u003d \"Edited Member: %1$s\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the address book.\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" private final EditMemberDescriptor editMemberDescriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" * @param index of the member in the filtered member list to edit","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @param editMemberDescriptor details to edit the member with","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberCommand(Index index, EditMemberDescriptor editMemberDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" this.editMemberDescriptor \u003d new EditMemberDescriptor(editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" Member memberToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d createEditedMember(memberToEdit, editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" if (!memberToEdit.isSameMember(editedMember) \u0026\u0026 model.hasMember(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" model.setMember(memberToEdit, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Creates and returns a {@code Member} with the details of {@code memberToEdit}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * edited with {@code editMemberDescriptor}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" private static Member createEditedMember(Member memberToEdit, EditMemberDescriptor editMemberDescriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assert memberToEdit !\u003d null;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" Name updatedName \u003d editMemberDescriptor.getName().orElse(memberToEdit.getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" Telegram updatedTelegram \u003d editMemberDescriptor.getTelegram()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" .orElse(memberToEdit.getTelegram());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Room updatedRoom \u003d editMemberDescriptor.getRoom().orElse(memberToEdit.getRoom());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Set\u003cTag\u003e updatedTags \u003d editMemberDescriptor.getTags().orElse(memberToEdit.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" return new Member(updatedName, updatedTelegram, updatedRoom, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof EditMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand otherEditMemberCommand \u003d (EditMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return index.equals(otherEditMemberCommand.index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 editMemberDescriptor.equals(otherEditMemberCommand.editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" .add(\"editMemberDescriptor\", editMemberDescriptor)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" * Stores the details to edit the member with. Each non-empty field value will replace the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" * corresponding field value of the member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public static class EditMemberDescriptor {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor() {}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor(EditMemberDescriptor toCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" setRoom(toCopy.room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" public void setRoom(Room room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cRoom\u003e getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof EditMemberDescriptor)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor otherEditMemberDescriptor \u003d (EditMemberDescriptor) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"starchypotatocode"},"content":" return Objects.equals(name, otherEditMemberDescriptor.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditMemberDescriptor.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(room, otherEditMemberDescriptor.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(tags, otherEditMemberDescriptor.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":72,"-":154}},{"path":"src/main/java/hallpointer/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Room Book as requested...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/FindMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * Finds and lists all members in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all members whose names contain any of \"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" String.format(Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW, model.getFilteredMemberList().size()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof FindMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand otherFindMemberCommand \u003d (FindMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" return predicate.equals(otherFindMemberCommand.predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":47}},{"path":"src/main/java/hallpointer/address/logic/commands/ListMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * Lists all members in the address book to the user.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"public class ListMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all members\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":19}},{"path":"src/main/java/hallpointer/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new AddMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * and returns an AddMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new Member(name, telegram, room, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommand(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":22,"-":37}},{"path":"src/main/java/hallpointer/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" case EditMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" return new EditMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" case FindMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" case ListMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" return new ListMemberCommand();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":70}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // Stream.of(prefixes).distinct() sorts prefixes by lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":78}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * 3. Consecutive whitespace will be replaced with a single space.\u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * 4. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Consecutive whitespace will also be replaced with a single space.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" argsString.replaceAll(\"\\\\s+\", \" \"), prefixes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" return extractArguments(argsString.replaceAll(\"\\\\s+\", \" \"), positions);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":145}},{"path":"src/main/java/hallpointer/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_ROOM \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":12}},{"path":"src/main/java/hallpointer/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new DeleteMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * and returns a DeleteMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommand(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":20}},{"path":"src/main/java/hallpointer/address/logic/parser/EditMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new EditMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandParser implements Parser\u003cEditMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the EditMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * and returns an EditMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_ROOM).isPresent()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setRoom(ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editMemberDescriptor::setTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!editMemberDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(EditMemberCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" return new EditMemberCommand(index, editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"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","isFullCredit":false},{"lineNumber":70,"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":25,"-":58}},{"path":"src/main/java/hallpointer/address/logic/parser/FindMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new FindMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParser implements Parser\u003cFindMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the FindMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * and returns a FindMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":23}},{"path":"src/main/java/hallpointer/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if {@code userInput} does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":15}},{"path":"src/main/java/hallpointer/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String room} into an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code room} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static Room parseRoom(String room) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" String trimmedRoom \u003d room.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(trimmedRoom)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" return new Room(trimmedRoom);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":19,"-":89}},{"path":"src/main/java/hallpointer/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.UniqueMemberList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Duplicates are not allowed (by .isSameMember comparison)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" members \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddressBook using the Members in the {@code toBeCopied}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of the member list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" this.members.setMembers(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" setMembers(newData.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" //// member-level operations","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMembers(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return members.contains(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member p) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" members.add(p);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" members.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" public void removeMember(Member key) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" members.remove(key);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" return members.asUnmodifiableObservableList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" return members.equals(otherAddressBook.members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" return members.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":98}},{"path":"src/main/java/hallpointer/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" Predicate\u003cMember\u003e PREDICATE_SHOW_ALL_MEMBERS \u003d unused -\u003e true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" boolean hasMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * Deletes the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" void deleteMember(Member target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" * Adds the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * {@code member} must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" void addMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" void setMember(Member target, Member editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered member list */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" * Updates the filter of the filtered member list to filter by the given {@code predicate}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" void updateFilteredMemberList(Predicate\u003cMember\u003e predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":70}},{"path":"src/main/java/hallpointer/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final FilteredList\u003cMember\u003e filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers \u003d new FilteredList\u003c\u003e(this.addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" return addressBook.hasMembers(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" addressBook.removeMember(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" addressBook.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Member 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-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the list of {@code Member} backed by the internal list of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" return filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers.setPredicate(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 filteredMembers.equals(otherModelManager.filteredMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":127}},{"path":"src/main/java/hallpointer/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the members list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * This list will not contain any duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":12}},{"path":"src/main/java/hallpointer/address/model/member/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class Member {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public Member(Name name, Telegram telegram, Room room, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" return telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public Room getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same name.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" * This defines a weaker notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public boolean isSameMember(Member otherMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" if (otherMember \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return otherMember !\u003d null","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 otherMember.getName().equals(getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same identity and data fields.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * This defines a stronger notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" Member otherMember \u003d (Member) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" return name.equals(otherMember.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 telegram.equals(otherMember.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 room.equals(otherMember.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 tags.equals(otherMember.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" return Objects.hash(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":30,"-":79}},{"path":"src/main/java/hallpointer/address/model/member/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s name in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":64}},{"path":"src/main/java/hallpointer/address/model/member/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Tests that a {@code Member}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public boolean test(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(member.getName().fullName, keyword));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":39}},{"path":"src/main/java/hallpointer/address/model/member/Room.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s room in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRoom(String)}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Room {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Room should be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+/[0-9]+/[0-9]+$\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * Constructs an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" * @param room A valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public Room(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidRoom(room), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" value \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidRoom(String test) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Room otherRoom \u003d (Room) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherRoom.value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":48}},{"path":"src/main/java/hallpointer/address/model/member/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s telegram in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Telegram {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" \"Telegram must only contain alphanumeric characters or underscores\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" + \"and be between 5 to 32 characters long\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" + \", starting with a letter and not ending with a underscore\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" + \"@ is not required as it is implicitly assumed to be there\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":64}},{"path":"src/main/java/hallpointer/address/model/member/UniqueMemberList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A list of members that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A member is considered unique by comparing using {@code Member#isSameMember(Member)}. As such, adding and updating of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * members uses Member#isSameMember(Member) for equality so as to ensure that the member being added or updated is","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * unique in terms of identity in the UniqueMemberList. However, the removal of a member uses Member#equals(Object) so","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * as to ensure that the member with exactly the same fields will be removed.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * @see Member#isSameMember(Member)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberList implements Iterable\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if the list contains an equivalent member as the given argument.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public boolean contains(Member toCheck) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return internalList.stream().anyMatch(toCheck::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void add(Member toAdd) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" if (!target.isSameMember(editedMember) \u0026\u0026 contains(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" internalList.set(index, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Removes the equivalent member from the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" public void remove(Member toRemove) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(UniqueMemberList replacement) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of this list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" if (!membersAreUnique(members)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public Iterator\u003cMember\u003e iterator() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" return internalList.iterator();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof UniqueMemberList)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList otherUniqueMemberList \u003d (UniqueMemberList) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" return internalList.equals(otherUniqueMemberList.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" return internalList.toString();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code members} contains only unique members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" private boolean membersAreUnique(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" for (int i \u003d 0; i \u003c members.size() - 1; i++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" for (int j \u003d i + 1; j \u003c members.size(); j++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" if (members.get(i).isSameMember(members.get(j))) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":150}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/DuplicateMemberException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation will result in duplicate Members (Members are considered duplicates if they have the same","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" * identity).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"public class DuplicateMemberException extends RuntimeException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" public DuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" super(\"Operation would result in duplicate members\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/MemberNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation is unable to find the specified member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"public class MemberNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6}},{"path":"src/main/java/hallpointer/address/model/session/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":" * Represents a date in the system.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"public class Date {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" \"Dates should be in the format dd MMM yyyy (e.g. 24 Sep 2024)\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Desired date format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" public final LocalDate fullDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" public Date(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" fullDate \u003d parseDate(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid date according to the specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" DATE_FORMATTER.parse(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * Parses a valid date string into a LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" * @return A LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" public static LocalDate parseDate(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" return LocalDate.parse(date, DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * Returns the date as a formatted string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" return fullDate.format(DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" return fullDate.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"keithxun":82}},{"path":"src/main/java/hallpointer/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":" * Represents a Session in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"public class Session {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" private final SessionName sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" private final int points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" private final Date date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" // Data fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" private final Set\u003cMember\u003e members \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" public Session(SessionName sessionName, Date date, int points, Set\u003cMember\u003e members) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" requireAllNonNull(sessionName, date, points, members);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" this.sessionName \u003d sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" this.points \u003d points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public SessionName getSessionName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public int getPoints() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" * Returns an immutable member set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" public Set\u003cMember\u003e getMembers() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" return Collections.unmodifiableSet(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" * Updates the set of members in the session.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * @param newMembers New set of members.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" public Session updateMembers(Set\u003cMember\u003e newMembers) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" return new Session(this.sessionName, this.date, this.points, newMembers);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" * This defines a weaker notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" public boolean isSameSession(Session otherSession) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" if (otherSession \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" return otherSession !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 otherSession.getSessionName().equals(getSessionName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" * This defines a stronger notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"keithxun"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSession.sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 points \u003d\u003d otherSession.points","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 members.equals(otherSession.members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"keithxun"},"content":" return Objects.hash(sessionName, points, members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"keithxun"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"keithxun"},"content":" .add(\"sessionName\", sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"keithxun"},"content":" .add(\"points\", points)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"keithxun"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"keithxun"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":109}},{"path":"src/main/java/hallpointer/address/model/session/SessionName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":" * Represents a Session\u0027s name in the application.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSessionName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"public class SessionName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" \"Session names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" * The first character of the session name must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" public final String sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code SessionName}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" * @param name A valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" public SessionName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidSessionName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" sessionName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" public static boolean isValidSessionName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof SessionName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" SessionName otherSessionName \u003d (SessionName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSessionName.sessionName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" return sessionName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":66}},{"path":"src/main/java/hallpointer/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static Member[] getSampleMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" return new Member[] {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Alex Yeoh\"), new Telegram(\"alex_yeoh98\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"12/04/201\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"subcommLeader\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Bernice Yu\"), new Telegram(\"BobLim23\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"5/03/102\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"competitionLeader\", \"achiever\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Charlotte Oliveiro\"), new Telegram(\"oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/02/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team1\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"David Li\"), new Telegram(\"davidLiOnly\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"14/06/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team3\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Irfan Ibrahim\"), new Telegram(\"ibrahim_irfan\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/05/323\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Roy Balakrishnan\"), new Telegram(\"roy_da_bomb\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"8/04/258\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" for (Member sampleMember : getSampleMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" sampleAb.addMember(sampleMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":26,"-":33}},{"path":"src/main/java/hallpointer/address/storage/JsonAdaptedMember.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * Jackson-friendly version of {@link Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"class JsonAdaptedMember {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Member\u0027s %s field is missing!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final String telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final String room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonAdaptedMember} with the given member details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @JsonProperty(\"room\") String room,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" * Converts a given {@code Member} into this class for Jackson use.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(Member source) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" room \u003d source.getRoom().value;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Converts this Jackson-friendly adapted member object into the model\u0027s {@code Member} object.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public Member toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" final List\u003cTag\u003e memberTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" memberTags.add(tag.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" if (room \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" final Room modelRoom \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(memberTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" return new Member(modelName, modelTelegram, modelRoom, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":36,"-":62}},{"path":"src/main/java/hallpointer/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"Members list contains duplicate member(s).\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final List\u003cJsonAdaptedMember\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"members\") List\u003cJsonAdaptedMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" members.addAll(source.getMemberList().stream().map(JsonAdaptedMember::new).collect(Collectors.toList()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" for (JsonAdaptedMember jsonAdaptedMember : members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d jsonAdaptedMember.toModelType();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (addressBook.hasMembers(member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":12,"-":48}},{"path":"src/main/java/hallpointer/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-w14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":101}},{"path":"src/main/java/hallpointer/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" private MemberListPanel memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" private StackPane memberListPanelPlaceholder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" memberListPanel \u003d new MemberListPanel(logic.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" memberListPanelPlaceholder.getChildren().add(memberListPanel.getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel getMemberListPanel() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" return memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see hallpointer.address.logic.Logic#execute(String)","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":190}},{"path":"src/main/java/hallpointer/address/ui/MemberCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * An UI component that displays information of a {@code Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"public class MemberCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListCard.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" private Label telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private Label room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberCode} with the given {@code Member} and index to display.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public MemberCard(Member member, int displayedIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" name.setText(member.getName().fullName);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" telegram.setText(member.getTelegram().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" room.setText(member.getRoom().value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":42}},{"path":"src/main/java/hallpointer/address/ui/MemberListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Panel containing the list of members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListPanel.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final Logger logger \u003d LogsCenter.getLogger(MemberListPanel.class);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" @FXML","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private ListView\u003cMember\u003e memberListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel(ObservableList\u003cMember\u003e memberList) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" super(FXML);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setItems(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setCellFactory(listView -\u003e new MemberListViewCell());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Member} using a {@code MemberCard}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" class MemberListViewCell extends ListCell\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" protected void updateItem(Member member, boolean empty) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" super.updateItem(member, empty);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" if (empty || member \u003d\u003d null) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" setText(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" } else {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(new MemberCard(member, getIndex() + 1).getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":49}},{"path":"src/main/java/hallpointer/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * An ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":27}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"#filterField, #memberListPanel, #memberWebpage {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":351}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" \u003cVBox fx:id\u003d\"memberList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" \u003cStackPane fx:id\u003d\"memberListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":57}},{"path":"src/main/resources/view/MemberListCard.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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"room\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$room\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":32}},{"path":"src/main/resources/view/MemberListPanel.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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" \u003cListView fx:id\u003d\"memberListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":6}},{"path":"src/test/java/hallpointer/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.core.index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" final Index fifthMemberIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(fifthMemberIndex));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(5.0f));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":7,"-":60}},{"path":"src/test/java/hallpointer/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" String listCommand \u003d ListMemberCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(listCommand, ListMemberCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" String addCommand \u003d AddMemberCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(expectedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":157}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code AddMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandIntegrationTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public void execute_newMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new AddMemberCommand(validMember), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" String.format(AddMemberCommand.MESSAGE_SUCCESS, Messages.format(validMember)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(new AddMemberCommand(memberInList), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":34}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMemberCommand(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public void execute_memberAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" ModelStubAcceptingMemberAdded modelStub \u003d new ModelStubAcceptingMemberAdded();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" CommandResult commandResult \u003d new AddMemberCommand(validMember).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(String.format(AddMemberCommand.MESSAGE_SUCCESS, Messages.format(validMember)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(validMember), modelStub.membersAdded);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(validMember);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" ModelStub modelStub \u003d new ModelStubWithMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER, () -\u003e addMemberCommand.execute(modelStub));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" Member alice \u003d new MemberBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" Member bob \u003d new MemberBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommand \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addBobCommand \u003d new AddMemberCommand(bob);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommandCopy \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddMemberCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, addMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that contains a single member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubWithMember extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" private final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" ModelStubWithMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" return this.member.isSameMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that always accept the member being added.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubAcceptingMemberAdded extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":" final ArrayList\u003cMember\u003e membersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"starchypotatocode"},"content":" return membersAdded.stream().anyMatch(member::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"starchypotatocode"},"content":" membersAdded.add(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":51,"-":154}},{"path":"src/test/java/hallpointer/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"happyAmy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bobTheTrain\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_AMY \u003d \"10/10/9\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_BOB \u003d \"3/1/90\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_AMY \u003d \" \" + PREFIX_ROOM + VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_BOB \u003d \" \" + PREFIX_ROOM + VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"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","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"#\"; // \u0027#\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_ROOM_DESC \u003d \" \" + PREFIX_ROOM + \"1/1/1a\"; // \u0027a\u0027 npt allowed in rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" public static final EditMemberCommand.EditMemberDescriptor DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public static final EditMemberCommand.EditMemberDescriptor DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" DESC_AMY \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" DESC_BOB \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" * - the address book, filtered member list and selected member in {@code actualModel} remain unchanged","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" * Updates {@code model}\u0027s filtered list to show only the member at the given {@code targetIndex} in the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public static void showMemberAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d model.getFilteredMemberList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" final String[] splitName \u003d member.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(1, model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":91}},{"path":"src/test/java/hallpointer/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" showNoMember(expectedModel);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteSecondCommand \u003d new DeleteMemberCommand(INDEX_SECOND_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommandCopy \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d DeleteMemberCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, deleteMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" private void showNoMember(Model model) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(p -\u003e false);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(model.getFilteredMemberList().isEmpty());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":81}},{"path":"src/test/java/hallpointer/address/logic/commands/EditMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditMemberCommand.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(editedMember).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Index indexLastMember \u003d Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member lastMember \u003d model.getFilteredMemberList().get(indexLastMember.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" MemberBuilder memberInList \u003d new MemberBuilder(lastMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d memberInList.withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(indexLastMember, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(lastMember, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, new EditMemberDescriptor());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" Member memberInFilteredList \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder(memberInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" Member firstMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(firstMember).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_SECOND_MEMBER, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, EditMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" // edit member in filtered list into a duplicate in address book","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(INDEX_SECOND_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder(memberInList).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, EditMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" final EditMemberCommand standardCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, DESC_AMY);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor copyDescriptor \u003d new EditMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand commandWithSameValues \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, copyDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(standardCommand.equals(new EditMemberCommand(INDEX_SECOND_MEMBER, DESC_AMY)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(standardCommand.equals(new EditMemberCommand(INDEX_FIRST_MEMBER, DESC_BOB)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(index, editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d EditMemberCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editMemberDescriptor\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, editMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":77,"-":111}},{"path":"src/test/java/hallpointer/address/logic/commands/EditMemberDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberDescriptorTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptorWithSameValues \u003d new EditMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d EditMemberDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getName().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getTelegram().orElse(null) + \", room\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getRoom().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, editMemberDescriptor.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":47}},{"path":"src/test/java/hallpointer/address/logic/commands/FindMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.CARL;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ELLE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.FIONA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code FindMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommand \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findSecondCommand \u003d new FindMemberCommand(secondPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommandCopy \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void execute_zeroKeywords_noMemberFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywords_multipleMembersFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywordsOutOfOrder_multipleMembersFound() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Elle Kurz Kunz\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findMemberCommand \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d FindMemberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, findMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":68}},{"path":"src/test/java/hallpointer/address/logic/commands/ListMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListMemberCommand.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class ListMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new ListMemberCommand(), model, ListMemberCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new ListMemberCommand(), model, ListMemberCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":31}},{"path":"src/test/java/hallpointer/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND, new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMemberMultipleTags \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMemberMultipleTags));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String validExpectedMemberString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" // multiple rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, ROOM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" // note that this will fail if the Message part does not have the prefixes sorted in lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" validExpectedMemberString + TELEGRAM_DESC_AMY + NAME_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_ROOM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_NAME_DESC,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" // missing room prefix","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":74,"-":96}},{"path":"src/test/java/hallpointer/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberUtil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand command \u003d (AddMemberCommand) parser.parseCommand(MemberUtil.getAddCommand(member));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new AddMemberCommand(member), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand command \u003d (DeleteMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.COMMAND_WORD + \" \" + INDEX_FIRST_MEMBER.getOneBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new DeleteMemberCommand(INDEX_FIRST_MEMBER), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(member).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand command \u003d (EditMemberCommand) parser.parseCommand(EditMemberCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" + INDEX_FIRST_MEMBER.getOneBased() + \" \" + MemberUtil.getEditMemberDescriptorDetails(descriptor));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new EditMemberCommand(INDEX_FIRST_MEMBER, descriptor), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d (FindMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new FindMemberCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(parser.parseCommand(ListMemberCommand.COMMAND_WORD) instanceof ListMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(parser.parseCommand(ListMemberCommand.COMMAND_WORD + \" 3\") instanceof ListMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":28,"-":73}},{"path":"src/test/java/hallpointer/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" public void tokenize_multipleWhitespaceTrimmed() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" String argsString \u003d \" -t Meow \\t Woof \\t\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, dashT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Optional.of(\"Meow Woof\"), argMultimap.getValue(dashT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":150}},{"path":"src/test/java/hallpointer/address/logic/parser/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * outside of the DeleteMemberCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * same path through the DeleteMemberCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"1\", new DeleteMemberCommand(INDEX_FIRST_MEMBER));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":24}},{"path":"src/test/java/hallpointer/address/logic/parser/EditMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" private EditMemberCommandParser parser \u003d new EditMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\", EditMemberCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS); // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROOM_DESC, Room.MESSAGE_CONSTRAINTS); // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram followed by valid room","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Member} being edited,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_ROOM_DESC + VALID_TELEGRAM_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" // telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" // room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" // AddMemberCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND + TELEGRAM_DESC_AMY + ROOM_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":72,"-":125}},{"path":"src/test/java/hallpointer/address/logic/parser/FindMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" private FindMemberCommandParser parser \u003d new FindMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand expectedFindMemberCommand \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":25}},{"path":"src/test/java/hallpointer/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+hisrocks\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d \"elephant\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d \"8/7/23\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoom((String) null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoom(INVALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithoutWhitespace_returnsRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(VALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithWhitespace_returnsTrimmedRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" String roomWithWhitespace \u003d WHITESPACE + VALID_ROOM + WHITESPACE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(roomWithWhitespace));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":138}},{"path":"src/test/java/hallpointer/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void resetData_withDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" // Two members with the same identity fields","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e newMembers \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub newData \u003d new AddressBookStub(newMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasMembers(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void getMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{members\u003d\" + addressBook.getMemberList() + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" * A stub ReadOnlyAddressBook whose members list can violate interface constraints.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e members \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub(Collection\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" this.members.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":75}},{"path":"src/test/java/hallpointer/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" modelManager.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withMember(ALICE).withMember(BENSON).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":116}},{"path":"src/test/java/hallpointer/address/model/member/MemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e member.getTags().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void isSameMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" Member editedBob \u003d new MemberBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" editedBob \u003d new MemberBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member aliceCopy \u003d new MemberBuilder(ALICE).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d Member.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", room\u003d\" + ALICE.getRoom()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":64}},{"path":"src/test/java/hallpointer/address/model/member/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // Two matching keywords, out of order","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\", \"Alice\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // Keywords match telegram and room, but does not match name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aliceinwonderland\", \"1/2/3\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").withTelegram(\"aliceinwonderland\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/2/3\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":73}},{"path":"src/test/java/hallpointer/address/model/member/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":59}},{"path":"src/test/java/hallpointer/address/model/member/RoomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class RoomTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Room(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidRoom_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidRoom \u003d \"\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Room(invalidRoom));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Room.isValidRoom(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"\")); // empty string","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"//\")); // slashes only","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"-1/2/3\")); // invalid number","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/0.2/3\")); // invalid decimal","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/\")); // missing numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2\")); // insufficient input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3 2 3\")); // no slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"/1/2/3/\")); // too many slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/3/4\")); // incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3/2/3 0\")); // also incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // valid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/3\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/0\")); // 0 is also acceptable here","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000/2000/3000\")); // long room numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000000000000/9/9\")); // duplicate numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d new Room(\"1/2/3\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(new Room(\"1/2/3\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(5.0f));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(new Room(\"2/3/4\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":68}},{"path":"src/test/java/hallpointer/address/model/member/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: length \u0026 character set","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"eeee\")); // less than 5 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"r456e\u0026\")); // non-underscore symbols","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"ben ten\")); // spaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"cccccdddddeeeeefffffggggghhhhhiii\")); // more than 33 characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_\")); // certain regexes fail this","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: starting and ending requirements","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"_aaaaaa\")); // start cannot be underscores","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"1aaaaaa\")); // start cannot be numberic","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"tota1\")); // end cannot be numeric","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" // valid telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"AAAAA\")); // exactly 5 chars, just caps","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"bbbbbbbb\")); // just lowercase","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A22W_f_wfe3\")); // numbers and underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A_____A\")); // consecutive underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\")); // exactly 32 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"Ra_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a\")); // certain regexes may fail this too","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d new Telegram(\"vegetable\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(new Telegram(\"vegetable\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(new Telegram(\"banana\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":69}},{"path":"src/test/java/hallpointer/address/model/member/UniqueMemberListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Collections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberListTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList uniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void contains_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.contains(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberNotInList_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void add_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.add(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void add_duplicateMember_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.add(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullTargetMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(null, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullEditedMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(ALICE, null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_targetMemberNotInList_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.setMember(ALICE, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberIsSameMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasSameIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasDifferentIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasNonUniqueIdentity_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMember(ALICE, BOB));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void remove_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.remove(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void remove_memberDoesNotExist_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.remove(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void remove_existingMember_removesMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.remove(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullUniqueMemberList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((UniqueMemberList) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_uniqueMemberList_replacesOwnListWithProvidedUniqueMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(expectedUniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((List\u003cMember\u003e) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e memberList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_listWithDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e listWithDuplicateMembers \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMembers(listWithDuplicateMembers));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" -\u003e uniqueMemberList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(uniqueMemberList.asUnmodifiableObservableList().toString(), uniqueMemberList.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":175}},{"path":"src/test/java/hallpointer/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Tests whether the SampleDataUtil\u0027s data remain valid after changes elsewhere.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleMembers_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleMembers);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21}},{"path":"src/test/java/hallpointer/address/storage/JsonAdaptedMemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.storage.JsonAdaptedMember.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class JsonAdaptedMemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d BENSON.getRoom().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_validMemberDetails_returnsMember() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(BENSON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(BENSON, member.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(INVALID_NAME, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(null, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, INVALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, null, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, INVALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Room.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, null, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, VALID_ROOM, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":37,"-":55}},{"path":"src/test/java/hallpointer/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.HOON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.IDA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidAndValidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(HOON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" original.removeMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(IDA);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":99}},{"path":"src/test/java/hallpointer/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.JsonUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.TypicalMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private static final Path TYPICAL_MEMBERS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalMembersAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" private static final Path INVALID_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final Path DUPLICATE_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_typicalMembersFile_success() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_MEMBERS_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" AddressBook typicalMembersAddressBook \u003d TypicalMembers.getTypicalAddressBook();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(addressBookFromFile, typicalMembersAddressBook);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidMemberFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_duplicateMembers_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_MEMBER,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":13,"-":34}},{"path":"src/test/java/hallpointer/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":67}},{"path":"src/test/java/hallpointer/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withMember(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Adds a new {@code Member} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public AddressBookBuilder withMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":29}},{"path":"src/test/java/hallpointer/address/testutil/EditMemberDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Set;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building EditMemberDescriptor objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberDescriptorBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private EditMemberDescriptor descriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder(EditMemberDescriptor descriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" this.descriptor \u003d new EditMemberDescriptor(descriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code EditMemberDescriptor} with fields containing {@code member}\u0027s details","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setName(member.getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTelegram(member.getTelegram());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setRoom(member.getRoom());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTags(member.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setRoom(new Room(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditMemberDescriptor}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" * that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" return descriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":77}},{"path":"src/test/java/hallpointer/address/testutil/MemberBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building Member objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"beeHappy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_ROOM \u003d \"5/12/207\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberBuilder} with the default details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" room \u003d new Room(DEFAULT_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * Initializes the MemberBuilder with the data of {@code memberToCopy}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder(Member memberToCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" name \u003d memberToCopy.getName();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d memberToCopy.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" room \u003d memberToCopy.getRoom();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" tags \u003d new HashSet\u003c\u003e(memberToCopy.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTags(String ... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public Member build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return new Member(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":52}},{"path":"src/test/java/hallpointer/address/testutil/MemberUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A utility class for Member.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberUtil {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Returns an add command string for adding the {@code member}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public static String getAddCommand(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" return AddMemberCommand.COMMAND_WORD + \" \" + getMemberDetails(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code member}\u0027s details.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static String getMemberDetails(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_NAME + member.getName().fullName + \" \");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_TELEGRAM + member.getTelegram().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_ROOM + member.getRoom().value + \" \");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream().forEach(","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code EditMemberDescriptor}\u0027s details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static String getEditMemberDescriptorDetails(EditMemberDescriptor descriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getTelegram().ifPresent(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getRoom().ifPresent(room -\u003e sb.append(PREFIX_ROOM).append(room.value).append(\" \"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":39}},{"path":"src/test/java/hallpointer/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" * Returns the middle index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size() / 2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Returns the last index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" * Returns the member in the {@code model}\u0027s member list at {@code index}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" public static Member getMember(Model model, Index index) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList().get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":47}},{"path":"src/test/java/hallpointer/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_FIRST_MEMBER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_SECOND_MEMBER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_THIRD_MEMBER \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":9}},{"path":"src/test/java/hallpointer/address/testutil/TypicalMembers.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * A utility class containing a list of {@code Member} objects to be used in tests.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class TypicalMembers {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ALICE \u003d new MemberBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/3/20\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"PauLice\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BENSON \u003d new MemberBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/10/95\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"benson_meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final Member CARL \u003d new MemberBuilder().withName(\"Carl Kurz\").withTelegram(\"kurZ0123\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/8/10\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public static final Member DANIEL \u003d new MemberBuilder().withName(\"Daniel Meier\").withTelegram(\"whisperWhiz23\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/3/3\").withTags(\"friends\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ELLE \u003d new MemberBuilder().withName(\"Elle Meyer\").withTelegram(\"meyer_for_lif3\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"4/5/55\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" public static final Member FIONA \u003d new MemberBuilder().withName(\"Fiona Kunz\").withTelegram(\"FIONAKUNZ\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"8/10/300\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final Member GEORGE \u003d new MemberBuilder().withName(\"George Best\").withTelegram(\"B357650463\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"90/2/8\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static final Member HOON \u003d new MemberBuilder().withName(\"Hoon Meier\").withTelegram(\"meier__5002\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/7/45\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public static final Member IDA \u003d new MemberBuilder().withName(\"Ida Mueller\").withTelegram(\"idaMueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/4/38\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" // Manually added - Member\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public static final Member AMY \u003d new MemberBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BOB \u003d new MemberBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" private TypicalMembers() {} // prevents instantiation","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code AddressBook} with all the typical members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" for (Member member : getTypicalMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" ab.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static List\u003cMember\u003e getTypicalMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":37}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027hallpointer.address.Main\u0027","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" archiveFileName \u003d \u0027hallpointer.jar\u0027","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":"run {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":73}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"You can reach us at the email seer[at]comp.nus.edu.sg","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"### Qin Haichen","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":"\u003cimg src\u003d\"images/qinhaichen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"[[github](https://github.com/QinHaichen12)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":"[[portfolio](team/qinhaichen12.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yuvrajaryan"},"content":"### Yuvraj Aryan Singh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yuvrajaryan"},"content":"\u003cimg src\u003d\"images/yuvrajaryan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yuvrajaryan"},"content":"[[github](http://github.com/yuvrajaryan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yuvrajaryan"},"content":"[[portfolio](team/yuvrajaryan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"### Daniel Lai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"\u003cimg src\u003d\"images/starchypotatocode.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"[[github](http://github.com/starchypotatocode)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"[[portfolio](team/starchypotatocode.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"- Responsibilities: Testing, Integration","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"### Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"\u003cimg src\u003d\"images/keithxun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"[[github](http://github.com/keithxun)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"[[portfolio](team/keithxun.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"### Tag Han","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":"\u003cimg src\u003d\"images/taggyhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":"[[github](https://github.com/taggyhan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":"[[portfolio](team/taggyhan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI, Scheduling and tracking","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":4,"taggyhan":13,"QinHaichen12":4,"starchypotatocode":6,"-":31,"keithxun":5}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":"1. Update the version number in [`MainApp.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer Developer Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"**`Main`** (consisting of classes [`Main`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/Main.java) and [`MainApp`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":"The **API** of this component is specified in [`Ui.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/Ui.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `MemberListPanel`, `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-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"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://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component, as it displays `Member` object residing in the `Model`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Logic.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/logic/Logic.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"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","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"2. 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":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a member).\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"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","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Model.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/model/Model.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"keithxun"},"content":"- stores the address book data i.e., all `Member` objects (which are contained in a `UniqueMemberList` object).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"keithxun"},"content":"- stores the currently \u0027selected\u0027 `Member` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cMember\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-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"keithxun"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Member` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Member` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Storage.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/storage/Storage.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"keithxun"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `hallpointer.address.commons` package.","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":"Step 2. The user executes `delete 5` command to delete the 5th member 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-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":"Step 3. The user executes `add n/David …​` to add a new member. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"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","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":"Step 4. The user now decides that adding the member 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-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"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","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"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","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"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","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"keithxun"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"keithxun"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"keithxun"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"keithxun"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"keithxun"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the member being deleted).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"keithxun"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"keithxun"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"keithxun"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"keithxun"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"keithxun"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"keithxun"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"keithxun"},"content":"- is a CCA leader in a NUS Hall","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"keithxun"},"content":"- is responsible for managing member participation, tracking attendance, and allocating points","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"keithxun"},"content":"- prefers streamlined solutions to minimize manual administrative work","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"keithxun"},"content":"- comfortable with both desktop and command-line interfaces (CLI)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"keithxun"},"content":"- often managing multiple responsibilities, including academic workload and hall duties","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"yuvrajaryan"},"content":"**Value proposition**: Hall Pointer empowers CCA leaders in NUS Halls to efficiently manage member tracking by streamlining participation recording, points allocation, and member information (such as room addresses). It simplifies manual data management, allowing leaders to focus on organizing activities rather than administrative tasks. Ideal for small, close-knit CCAs, it ensures quick access to updated information, enabling accurate and easy sharing of participation records with hall management or other stakeholders.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"keithxun"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"keithxun"},"content":"| -------- | --------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Explore the app using sample data | I can understand its features without manually entering data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See a guide on how to use the app | I can better understand its functionalities | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the app | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Delete all data in the app | I can start over when I make a mistake and remove sample data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Add new users to the app | I can track points for new Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Delete existing users from the app | I can stop tracking points for ex-Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Customize point allocation criteria | I can reward members based on different participation criteria | E.g., different point weights for different activities |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Add or delete points for each member | I can track the overall participation status in the CCA | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Filter the data to see members with low attendance | I can identify which members need attention | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Edit member details (e.g., name, contact) | I can keep the member database up to date | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"keithxun"},"content":"| `* *` | First-time user | Import data from an existing Google Sheets document or csv file | I can quickly upload my data without manual entry | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Automatically track attendance at each session | I don\u0027t need to manually mark attendance for each session | Using QR codes? That would need some kind of integration though, would be complicated |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without navigating multiple screens | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Set up custom attendance categories (e.g., Excused, Late) | I can categorize different types of attendance | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"keithxun"},"content":"| `* *` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Charts or graphs to visualize data |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"keithxun"},"content":"| `*` | User | Sort members by name | I can locate a member easily | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"keithxun"},"content":"| `*` | Frequent user | Automatically save changes without manual intervention | I don’t lose progress if I forget to click save | Auto-save feature |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Perform all actions using the CLI | I can interact with the app more efficiently without relying on the GUI | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Automate repetitive tasks, such as attendance updates | I can save time by reducing manual input | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"keithxun"},"content":"| `*` | User | Add notes for each member | I can track special situations or reasons for absences | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC01 - Add Member to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new member to the CCA for attendance tracking and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"1. CCA Leader inputs the `add_member` command with required details (name, room number, and telegram).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_member /name John Doe /room 4/3/301 /tele johndoe123`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered details for the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the member to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"QinHaichen12"},"content":"4. The new member is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate member is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Member John Doe already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add member operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC02 - Add Session to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new CCA session to the system for tracking attendance and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the session such as name, date, and points.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `add_session` command with session details (name, date, and points).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_session rehearsal /date 2024-09-19 /points 2`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the session to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"QinHaichen12"},"content":"4. The new session is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate session is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Session rehearsal already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add session operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC03 - Mark Member Present for a Session","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to mark a member as present for a specific CCA session.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"QinHaichen12"},"content":"1. The member and session must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `mark_present` command with the member name and session name.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"QinHaichen12"},"content":" - Example: `mark_present John Doe /session volleyball training`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer records the attendance and displays a success message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"QinHaichen12"},"content":" - `Attendance recorded for John Doe on volleyball training.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"QinHaichen12"},"content":"4. The updated attendance is reflected in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member or session not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message indicating the missing entity.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"QinHaichen12"},"content":" - `Failed to log attendance: member or session does not exist.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the mark present operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC04 - Update Member Information","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"starchypotatocode"},"content":"**Description**: This use case allows a CCA leader to update the details of an existing member, such as room number, telegram, or tags.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"QinHaichen12"},"content":"1. The member to be updated must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `update_member` command with the member name and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"QinHaichen12"},"content":" - Example: `update_member John Doe /room 9/10/203 /tag friend`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer updates the member information and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"QinHaichen12"},"content":" - `Member John Doe\u0027s room updated to 9/10/203.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"QinHaichen12"},"content":"4. The updated member information is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"QinHaichen12"},"content":" - `Error: Member with the given name could not be found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the update operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC05 - View All Members","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to view a list of all members in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"QinHaichen12"},"content":"None.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `list_members` command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer retrieves and displays all members in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"QinHaichen12"},"content":"- **2a. No members found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"QinHaichen12"},"content":" - `Error: No members found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"starchypotatocode"},"content":"2. Should be able to hold up to 1000 members without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"keithxun"},"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":"2024-09-30","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"keithxun"},"content":"4. The application should respond to user commands within 2 seconds under normal operating conditions.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"keithxun"},"content":"5. The user interface should be intuitive enough for a first-time user to understand basic functionalities without external help.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"keithxun"},"content":"6. While primarily designed for one user, the application should be able to handle up to 1000 members efficiently, with room for future enhancements.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"keithxun"},"content":"7. The application should have a success rate of at least 95% for command executions, ensuring that most user actions are completed successfully without errors.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"keithxun"},"content":"8. Code should be organized and documented to facilitate future updates or modifications.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"keithxun"},"content":"9. The application should run seamlessly across different operating systems without requiring extensive configuration.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"taggyhan"},"content":"1. **Hall Pointer:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"taggyhan"},"content":" A desktop application used by CCA leaders in NUS Halls to track hall points, manage member participation, attendance, and allocate points. It is optimized for Command Line Interface (CLI) usage but also includes a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"taggyhan"},"content":"2. **CLI (Command Line Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"taggyhan"},"content":" A text-based interface where users interact with the application by typing commands, making it efficient for users comfortable with fast typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"taggyhan"},"content":"3. **GUI (Graphical User Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"taggyhan"},"content":" A visual interface that allows users to interact with the application using graphical components like buttons and menus, in addition to CLI commands.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"taggyhan"},"content":"4. **Member:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"starchypotatocode"},"content":" A participant or member of a CCA (Co-Curricular Activity) in NUS Halls, whose details are tracked in the Hall Pointer system (e.g., name, telegram, points, and attendance).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"taggyhan"},"content":"5. **Points Allocation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"taggyhan"},"content":" The process of awarding hall points to members based on their participation in activities. CCA leaders can customize the criteria for point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"taggyhan"},"content":"6. **CCA (Co-Curricular Activity):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"taggyhan"},"content":" A club or activity within an NUS Hall that tracks member participation and points. Hall Pointer helps CCA leaders manage their members more efficiently.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"taggyhan"},"content":"7. **Gradle:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"taggyhan"},"content":" A build automation tool used in Hall Pointer for compiling code, managing dependencies, and running tasks such as testing and creating JAR files.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"taggyhan"},"content":"8. **JUnit:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"taggyhan"},"content":" A testing framework for Java, used in Hall Pointer to run automated tests on individual units of the system and ensure code correctness.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"taggyhan"},"content":"9. **ShadowJar:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"taggyhan"},"content":" A Gradle task that generates a fat JAR file, which bundles the application and its dependencies into a single JAR for distribution.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"taggyhan"},"content":"10. **GitHub Actions:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"taggyhan"},"content":" A Continuous Integration (CI) tool integrated with GitHub to automatically test and build the Hall Pointer application whenever new changes are pushed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"taggyhan"},"content":"11. **Codecov:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"taggyhan"},"content":" A tool that tracks code coverage during testing. It helps assess how much of the Hall Pointer code is covered by tests, encouraging improvements to the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"taggyhan"},"content":"12. **Fat JAR:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"taggyhan"},"content":" A JAR file that contains the entire application along with all its dependencies, allowing Hall Pointer to run as a standalone application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"taggyhan"},"content":"13. **POSIX-compliant OS:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"taggyhan"},"content":" Operating systems like Linux and macOS that adhere to POSIX standards and are compatible with shell scripts used for CI tasks in Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"taggyhan"},"content":"14. **Tag:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"taggyhan"},"content":" Labels or categories assigned to members in the Hall Pointer system (e.g., `leader`, `active`, `inactive`). Tags help classify and manage members more easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"taggyhan"},"content":"15. **Undo/Redo Feature:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"taggyhan"},"content":" A proposed feature that allows users to revert or redo changes in Hall Pointer, enabling easy correction of mistakes.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"taggyhan"},"content":"16. **Versioned AddressBook:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"taggyhan"},"content":" Refers to a version of the Hall Pointer system where the state of member data is saved at specific intervals to allow undo/redo functionality.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"taggyhan"},"content":"17. **Test Coverage:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"taggyhan"},"content":" A metric that measures how much of the Hall Pointer codebase is covered by tests, indicating the effectiveness and thoroughness of the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"taggyhan"},"content":"18. **User Preferences:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"taggyhan"},"content":" Settings such as window size and logging levels that can be customized by users and saved in a configuration file (`config.json`) for Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"taggyhan"},"content":"19. **Configuration File (`config.json`):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"taggyhan"},"content":" A JSON file that stores user preferences and application settings for Hall Pointer, including file locations and logging levels.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"taggyhan"},"content":"20. **Build Automation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"taggyhan"},"content":" The process of automating the compilation, testing, and packaging of Hall Pointer using Gradle to ensure consistent builds across different environments.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"taggyhan"},"content":"21. **Continuous Integration (CI):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"taggyhan"},"content":" A practice used in Hall Pointer, powered by GitHub Actions, where tests and checks are run automatically to verify the integrity of new code changes before merging.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"taggyhan"},"content":"22. **Unit Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"taggyhan"},"content":" A test that targets individual components or methods in the Hall Pointer system to ensure they function correctly in isolation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"taggyhan"},"content":"23. **Integration Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"taggyhan"},"content":" A test that checks how different components in Hall Pointer interact with each other, ensuring they work together as expected.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"taggyhan"},"content":"24. **Hybrid Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"taggyhan"},"content":" A combination of unit and integration testing that checks both the individual components and their interactions in the Hall Pointer system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"taggyhan"},"content":"25. **Command:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"taggyhan"},"content":" A typed instruction input by the user in the CLI to perform an action in Hall Pointer, such as adding members, editing details, or tracking points (e.g., `add`, `list`, `delete`).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"keithxun"},"content":"testers are expected to do more _exploratory_ testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"starchypotatocode"},"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-09-30","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"starchypotatocode"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"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","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"starchypotatocode"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"starchypotatocode"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"starchypotatocode"},"content":"1. Deleting a member while all members are being shown","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"starchypotatocode"},"content":" 1. Prerequisites: List all members using the `list` command. Multiple members in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"starchypotatocode"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":610,"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","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"starchypotatocode"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"starchypotatocode"},"content":" Expected: No member is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"starchypotatocode"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"taggyhan":72,"QinHaichen12":149,"starchypotatocode":31,"-":288,"keithxun":85}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer User Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"1. Download the latest `.jar` file from [here](https://ay2425s1-cs2103t-w14-3.github.io/releases).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar hallpointer.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * `add n/John Doe tg/98765432 r/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" e.g. if the command specifies `n/NAME tg/TELEGRAM`, `tg/TELEGRAM n/NAME` is also acceptable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"### Adding a member: `add`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":"Adds a member to the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":"Format: `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"**Tip:** A member can have any number of tags (including 0)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":"* `add n/John Doe tg/98765432 r/John street, block 123, #01-01`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":"* `add n/Betsy Crowe t/friend r/Newgate Prison tg/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":"### Listing all members : `list`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"Shows a list of all members in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"### Editing a member : `edit`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":"Edits an existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":"Format: `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":"* Edits the member at the specified `INDEX`. The index refers to the index number shown in the displayed member list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":"* When editing tags, the existing tags of the member will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"* You can remove all the member’s tags by typing `t/` without","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":"* `edit 1 tg/91234567 n/Johnson Doe` Edits the telegram and name of the 1st member to be `91234567` and `Johnson Doe` respectively.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd member to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"### Locating members by name: `find`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":"Finds members whose names contain any of the given keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"* Members matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member : `delete`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"Deletes the specified member from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":"* Deletes the member at the specified `INDEX`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":"* The index refers to the index number shown in the displayed member list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":"* `list` followed by `delete 2` deletes the 2nd member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st member in the results of the `find` command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"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","isFullCredit":false},{"lineNumber":172,"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"starchypotatocode"},"content":"**Add** | `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho tg/22224444 r/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":"**Edit** | `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee tg/99998888`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":174}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eHallPointer\u003c/a\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/ay2425s1-cs2103t-w14-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":66}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteMember(p)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *-right-\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -right-\u003e Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Member -up-\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"DeleteCommand -\u003e Model : deleteMember(1)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"Class Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Class Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *--\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList --\u003e \"~* all\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Address","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":"Member -[hidden]up--\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -[hidden]right-\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"Name -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"Telegram -[hidden]right-\u003e Address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"ModelManager --\u003e \"~* filtered\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":37}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"Class JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"JsonAdaptedMember --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"Class MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"MainWindow *-down-\u003e \"1\" MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -down-\u003e \"*\" MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":"MemberCard --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"MemberCard ..\u003e Model","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"ecp -\u003e ec ++: index, updateMemberDescriptor","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":" title: \"HallPointer\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"# HallPointer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"[![codecov](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"### Key Features","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"- **Manage Members:** Add, edit, delete, and view CCA members easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"- **Track Attendance:** Record participation in events and track members with low attendance.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- **Allocate Points:** Customize and track hall points based on member participation in activities.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- **Efficient CLI-based Commands:** Perform tasks quickly using CLI commands for users familiar with typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Undo/Redo Support:** A proposed feature for reverting changes to ensure accurate management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":"### Getting Started","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- If you are a user interested in using **HallPointer**, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start) for instructions on how to set up and begin using the application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- If you are interested in contributing to or developing **HallPointer**, the [**Developer Guide**](DeveloperGuide.md) provides detailed technical information and instructions to help you get started.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"### Acknowledgements","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Libraries used:**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - [JavaFX](https://openjfx.io/) - for building the graphical user interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" - [Jackson](https://github.com/FasterXML/jackson) - for JSON processing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" - [JUnit5](https://github.com/junit-team/junit5) - for testing the application.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"taggyhan":25,"starchypotatocode":3,"-":12}},{"path":"docs/team/keithxun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"# Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"- **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"- **Email**: [keithonghx@gmail.com](mailto:keithonghx@gmail.com)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"- **GitHub**: [https://github.com/keithxun](https://github.com/keithxun)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"## Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"**National University of Singapore**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"_Bachelor of Computing_ (Aug 2023 – Aug 2027)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"**GPA**: 4.8","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"## Achievements","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":"- **Dean\u0027s List** - AY 23/24 Sem 1","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"- **What The Hack Hackathon** – Developed a Green Web Application to Reduce Carbon Footprint","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"- **RHdev Hackathon** – Created a Web \u0026 Telegram Application for Canvas Notifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020 Publication** – Precision Ellipsometry System under A\\*STAR","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"## Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":"### Process Automation Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":"_CPF Board, Singapore_ (May 2024 – Aug 2024)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"- Developed a **UIPath script** incorporating **computer vision** and **OCR technologies** to automate access applications, saving over 100 hours annually.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"- Implemented a category sorting system using the **Mistral Model** and **LLMs**, reducing misclassification by 40%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"- Led project management for a **gamification app** for agents, overseeing requirements gathering and timeline management.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: UIPath, Python, OCR, Computer Vision, LLMs, Microsoft PowerApps","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"### Software Engineer (SWE), Project Sabai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"_YYL SOM, Singapore \u0026 Cambodia_ (Dec 2023 - Present)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- Maintained and enhanced a **biometric web application** for clinical use with a team of 21.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":"- Refactored codebase to improve performance in poor internet conditions in Cambodia and ensure future scalability.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":"- Revamped the **user interface** to improve user experience.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: React, Next.js, Tailwind CSS, Django, PostgreSQL, Vercel, New Relic, Auth0","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"### Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"*A*STAR, Singapore\\* (Jan 2019 - Feb 2020)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"- Engineered a portable **precision ellipsometry system** for use with liquids, under the guidance of Dr. Nikolai Yakovlev.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"## Publications and Presentations","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020**: Published and presented on the **Precision Ellipsometry System**, designed for portability and use with liquid samples in field settings.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"**[GitHub](https://github.com/keithxun)** | **[Email](mailto:keithonghx@gmail.com)** | **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"keithxun":60}},{"path":"docs/team/qinhaichen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"QinHaichen12"},"content":"# Qin Haichen","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"QinHaichen12"},"content":"- **HP**: 93691698","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"QinHaichen12"},"content":"- **Email**: [haichensurfs@gmail.com](mailto:haichensurfs@gmail.com)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"QinHaichen12"},"content":"- **LinkedIn profile**: [LinkedIn Profile](#)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"QinHaichen12"},"content":"- **Availability**: Available for internship Jan – Jun and May - Aug","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"QinHaichen12"},"content":"## Education","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"QinHaichen12"},"content":"### National University of Singapore","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"QinHaichen12"},"content":"**Aug 2023 - Jul 2027**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Computing in Computer Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":" - Top scorer for Data Structures and Algorithms and Programming Methodology II","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"QinHaichen12"},"content":" - Obtained top 8 in a robotics contest organized by the School of Computing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Science in Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"QinHaichen12"},"content":" - Obtained highest grade (A+) in Calculus, Linear Algebra, and Probability","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"QinHaichen12"},"content":"### NUS High School of Mathematics and Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2015 - Dec 2020**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"QinHaichen12"},"content":"- NUS High School Diploma with Honours in Chemistry, Physics, and Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"QinHaichen12"},"content":" - Graduated with a Cumulative Average Point (CAP) of 4.8/5.0","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"QinHaichen12"},"content":" - Part of the National Team for Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Maths Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"QinHaichen12"},"content":"## Projects","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"QinHaichen12"},"content":"- Collaborated with a team of four to create a mobile app with Unity engine and C# incorporating AR functionalities within 3 days and trained a Machine Learning model using YOLO_v8 for animal image recognition leveraging Python and TensorFlow.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"QinHaichen12"},"content":"- Deployed a full-stack web application on Vercel platform that enables users to create and participate in prediction challenges using Next.js for frontend and Supabase for backend database management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"QinHaichen12"},"content":"## Technical Skills","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"QinHaichen12"},"content":"- **Languages**: Java, Python, Javascript, PostgreSQL, C#, C++","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"QinHaichen12"},"content":"- **Frameworks**: React, Next.js","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"QinHaichen12"},"content":"## Work Experience","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"QinHaichen12"},"content":"### Part Time Tutor (Self-employed)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2023 - Aug 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"QinHaichen12"},"content":"- Tutored multiple students for physics and mathematics at Junior College level","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"QinHaichen12"},"content":"### Head Depot Clerk (Singapore Armed Forces)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2021 - Jan 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"QinHaichen12"},"content":"- Managed administrative processes for a depot with more than 70 people","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"QinHaichen12"},"content":"- Engineered an automated duty planning system using VBA and Power Query that streamlined scheduling for 70+ personnel, resulting in time savings of over 15 hours per week on administrative tasks.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"QinHaichen12"},"content":"### Research Intern (Cryowerx)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2019 - Oct 2019**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"QinHaichen12"},"content":"- Developed innovative solutions to mitigate RFID signal detuning caused by medium placement or material obstructions.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"QinHaichen12"},"content":"- Presented the project at Singapore Science Engineering Fair 2020, earning a Merit Award for its effectiveness in addressing complex engineering challenges related to RFID technology.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"QinHaichen12"},"content":"## Community Involvement","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"QinHaichen12"},"content":"### Trained Repair Coach (Repair Kopitiam Singapore)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2023 - Present**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"QinHaichen12"},"content":"- Trained to repair common electrical and mechanical devices","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"QinHaichen12":58,"keithxun":12}},{"path":"docs/team/taggyhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"* * * * *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"**Tan Tag Han**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"- **Email**: e0516145@u.nus.edu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"- **Phone**: 82013355","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"- **LinkedIn**: [Tag Han Tan](https://www.linkedin.com/in/tag-han-tan/)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"### Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"- **National University of Singapore (2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" - Bachelor of Computing, Computer Science","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"- **NUS High School of Mathematics and Science (2015 -- 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" - High Distinction (Majors with Honors in Chemistry; Majors in Math, Physics, Biology)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" - Societies: Track \u0026 Field Team; Drama Club; Boarding School Leader; Chemistry Olympiad Team","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"### Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Institute of High-Performance Computing (Nov 2022 - Jun 2023)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" - Developed loss functions in Generative Adversarial Networks for image-to-image translation networks.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" - Improved image quality metrics by 15%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"- **Bioinformatics Institute (Jun 2019 - Mar 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" - Bioinformatics Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" - Performed molecular dynamics tasks for protein-protein binding interactions in AMBER 14.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" - Bronze Medal at Singapore Science and Engineering Fair and A*STAR Talent Search (Top 50 in Singapore).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"### Clubs \u0026 Societies","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":"- **NUS Fintech Society (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Google Developers Student Club (GDSC) NUS (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"taggyhan":38}},{"path":"docs/team/yuvrajaryan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yuvrajaryan"},"content":" title: \"Yuvraj Aryan Singh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"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":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"-":45}},{"path":"src/main/java/hallpointer/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Config;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Version;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ConfigUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.LogicManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.AddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.Ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.UiManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final Version VERSION \u003d new Version(1, 0, 0, true);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":185}},{"path":"src/main/java/hallpointer/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code s} represents a non-negative unsigned integer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * e.g. 0, 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * e.g. empty string, \"-1\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isNonNegativeUnsignedInteger(String s) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" try {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return value \u003e\u003d 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":68}},{"path":"src/main/java/hallpointer/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see hallpointer.address.model.Model#getAddressBook()","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered list of members */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":47}},{"path":"src/main/java/hallpointer/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":85}},{"path":"src/main/java/hallpointer/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.Prefix;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_MEMBERS_LISTED_OVERVIEW \u003d \"%1$d members listed!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" * Formats the {@code member} for display to the user.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public static String format(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" builder.append(member.getName())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getTelegram())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Room: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getRoom())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().forEach(builder::append);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":10,"-":38}},{"path":"src/main/java/hallpointer/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" * Adds a member to the CCA system.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"add_member\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a member to the CCA. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM_HANDLE \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"ROOM_NUMBER \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"4/3/301 \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"johndoe123 \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TAG + \"logistics\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Member %1$s with room %2$s and Telegram handle %3$s \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" + \"added successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the CCA system.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" private final Member toAdd;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddMemberCommand to add the specified {@code Member}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand(Member member) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" toAdd \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" if (model.hasMember(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" // Add member to the model","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" model.addMember(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" // Format the success message with the member\u0027s name, room number, and Telegram handle","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" String.format(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" toAdd.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" toAdd.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" toAdd.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" )","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" return toAdd.equals(otherAddMemberCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":22,"starchypotatocode":15,"-":52}},{"path":"src/main/java/hallpointer/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" * Deletes a member identified using its displayed index from the CCA system.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"delete_member\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" + \": Deletes the member identified by the index number used in the displayed member list.\\n\"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DELETE_MEMBER_SUCCESS \u003d \"Member %1$s with room %2$s and Telegram Handle %3$s \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" + \"deleted successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand(Index targetIndex) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" // Check if the index is valid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" // Get the member to delete","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" model.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" // Success message with name, room, and telegram details","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" String.format(MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" return targetIndex.equals(otherDeleteMemberCommand.targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":17,"starchypotatocode":10,"-":53}},{"path":"src/main/java/hallpointer/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Room Book as requested...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/FindMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":" * Finds and lists all members in the CCA system whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"find_members\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all members whose names contain any of \"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" + \"Example: \" + COMMAND_WORD + \" John Jane\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" String.format(Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW, model.getFilteredMemberList().size()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof FindMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand otherFindMemberCommand \u003d (FindMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return predicate.equals(otherFindMemberCommand.predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"taggyhan":3,"starchypotatocode":10,"-":44}},{"path":"src/main/java/hallpointer/address/logic/commands/ListMembersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":" * Lists all members in the CCA system to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"public class ListMembersCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"list_members\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all members\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_NO_MEMBERS \u003d \"Error: No members found.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":3,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/UpdateMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" * Updates the details of an existing member in the CCA system.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"update_member\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the member identified \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" + \"by the index number used in the displayed member list. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM_HANDLE] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" + \"[\" + PREFIX_ROOM + \"ROOM_NUMBER] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"9/10/203 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"johnDoe123 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TAG + \"friend\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_UPDATE_MEMBER_SUCCESS \u003d \"Member %1$s\u0027s details updated successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"A member with the same name already exists.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" private final UpdateMemberDescriptor updateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" * @param index of the member in the filtered member list to update","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" * @param updateMemberDescriptor details to update the member with","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberCommand(Index index, UpdateMemberDescriptor updateMemberDescriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" requireNonNull(updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" this.updateMemberDescriptor \u003d new UpdateMemberDescriptor(updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"taggyhan"},"content":" Member memberToUpdate \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"taggyhan"},"content":" Member updatedMember \u003d createUpdatedMember(memberToUpdate, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"taggyhan"},"content":" if (!memberToUpdate.isSameMember(updatedMember) \u0026\u0026 model.hasMember(updatedMember)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"taggyhan"},"content":" model.setMember(memberToUpdate, updatedMember);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(updatedMember)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"taggyhan"},"content":" * Creates and returns a {@code Member} with the details of {@code memberToUpdate}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"taggyhan"},"content":" * edited with {@code updateMemberDescriptor}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"taggyhan"},"content":" private static Member createUpdatedMember(Member memberToUpdate, UpdateMemberDescriptor updateMemberDescriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"taggyhan"},"content":" assert memberToUpdate !\u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"taggyhan"},"content":" Name updatedName \u003d updateMemberDescriptor.getName().orElse(memberToUpdate.getName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"taggyhan"},"content":" Telegram updatedTelegram \u003d updateMemberDescriptor.getTelegram().orElse(memberToUpdate.getTelegram());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"taggyhan"},"content":" Room updatedRoom \u003d updateMemberDescriptor.getRoom().orElse(memberToUpdate.getRoom());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"taggyhan"},"content":" Set\u003cTag\u003e updatedTags \u003d updateMemberDescriptor.getTags().orElse(memberToUpdate.getTags());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" return new Member(updatedName, updatedTelegram, updatedRoom, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"taggyhan"},"content":" if (!(other instanceof UpdateMemberCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand otherUpdateMemberCommand \u003d (UpdateMemberCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"taggyhan"},"content":" return index.equals(otherUpdateMemberCommand.index)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 updateMemberDescriptor.equals(otherUpdateMemberCommand.updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"taggyhan"},"content":" .add(\"UpdateMemberDescriptor\", new UpdateMemberDescriptor())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"taggyhan"},"content":" * Stores the details to update the member with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" * corresponding field value of the member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" public static class UpdateMemberDescriptor {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor(UpdateMemberDescriptor toCopy) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" setRoom(toCopy.room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"taggyhan"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"taggyhan"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" public void setRoom(Room room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cRoom\u003e getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"taggyhan"},"content":" if (!(other instanceof UpdateMemberDescriptor)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor otherUpdateMemberDescriptor \u003d (UpdateMemberDescriptor) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"taggyhan"},"content":" return Objects.equals(name, otherUpdateMemberDescriptor.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(telegram, otherUpdateMemberDescriptor.telegram)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(room, otherUpdateMemberDescriptor.room)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdateMemberDescriptor.tags);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"taggyhan":51,"starchypotatocode":28,"-":149}},{"path":"src/main/java/hallpointer/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new AddMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * and returns an AddMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new Member(name, telegram, room, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommand(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":22,"-":37}},{"path":"src/main/java/hallpointer/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" case UpdateMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" return new UpdateMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" case FindMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" case ListMembersCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"taggyhan"},"content":" return new ListMembersCommand();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":6,"starchypotatocode":10,"-":70}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // Stream.of(prefixes).distinct() sorts prefixes by lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":78}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * 3. Consecutive whitespace will be replaced with a single space.\u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * 4. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Consecutive whitespace will also be replaced with a single space.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" argsString.replaceAll(\"\\\\s+\", \" \"), prefixes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" return extractArguments(argsString.replaceAll(\"\\\\s+\", \" \"), positions);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":145}},{"path":"src/main/java/hallpointer/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_ROOM \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"taggyhan":2,"starchypotatocode":1,"-":11}},{"path":"src/main/java/hallpointer/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new DeleteMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * and returns a DeleteMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommand(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":20}},{"path":"src/main/java/hallpointer/address/logic/parser/FindMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":" * Parses input arguments and creates a new FindMemberCommand object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParser implements Parser\u003cFindMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the FindMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * and returns a FindMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":9,"-":22}},{"path":"src/main/java/hallpointer/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if {@code userInput} does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":15}},{"path":"src/main/java/hallpointer/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String room} into an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code room} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static Room parseRoom(String room) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" String trimmedRoom \u003d room.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(trimmedRoom)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" return new Room(trimmedRoom);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":19,"-":89}},{"path":"src/main/java/hallpointer/address/logic/parser/UpdateMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":" * Parses input arguments and creates a new UpdateMemberCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandParser implements Parser\u003cUpdateMemberCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" * Parses the given {@code String} of arguments in the context of the UpdateMemberCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":" * and returns an UpdateMemberCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setTelegram(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_ROOM).isPresent()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setRoom(ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updateMemberDescriptor::setTags);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" if (!updateMemberDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" throw new ParseException(UpdateMemberCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" return new UpdateMemberCommand(index, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"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","isFullCredit":false},{"lineNumber":70,"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":17,"starchypotatocode":9,"-":58}},{"path":"src/main/java/hallpointer/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.UniqueMemberList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Duplicates are not allowed (by .isSameMember comparison)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" members \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddressBook using the Members in the {@code toBeCopied}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of the member list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" this.members.setMembers(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" setMembers(newData.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" //// member-level operations","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMembers(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return members.contains(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member p) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" members.add(p);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" members.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" public void removeMember(Member key) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" members.remove(key);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" return members.asUnmodifiableObservableList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" return members.equals(otherAddressBook.members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" return members.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":98}},{"path":"src/main/java/hallpointer/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" Predicate\u003cMember\u003e PREDICATE_SHOW_ALL_MEMBERS \u003d unused -\u003e true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" boolean hasMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * Deletes the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" void deleteMember(Member target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" * Adds the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * {@code member} must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" void addMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" void setMember(Member target, Member editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered member list */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" * Updates the filter of the filtered member list to filter by the given {@code predicate}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" void updateFilteredMemberList(Predicate\u003cMember\u003e predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":70}},{"path":"src/main/java/hallpointer/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final FilteredList\u003cMember\u003e filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers \u003d new FilteredList\u003c\u003e(this.addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" return addressBook.hasMembers(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" addressBook.removeMember(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" addressBook.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Member 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-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the list of {@code Member} backed by the internal list of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" return filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers.setPredicate(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 filteredMembers.equals(otherModelManager.filteredMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":127}},{"path":"src/main/java/hallpointer/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the members list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * This list will not contain any duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":12}},{"path":"src/main/java/hallpointer/address/model/member/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class Member {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public Member(Name name, Telegram telegram, Room room, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" // Validate each field using regex","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" if (!name.fullName.matches(\"^[a-zA-Z][a-zA-Z ]{0,99}$\")) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(\"Error: Invalid name format.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" if (!room.value.matches(\"^[0-9]+/[0-9]+/[0-9]+$\")) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" \"Error: Room number must be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" if (!telegram.value.matches(\"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\")) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" \"Error: Telegram handle must only contain alphanumeric characters or underscores \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" + \"and be between 5 to 32 characters long.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" // Set values after validation","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" return telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public Room getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same name.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" * This is used to check for duplicates in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public boolean isSameMember(Member otherMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" if (otherMember \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"taggyhan"},"content":" // Check for duplicate based only on name","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" return otherMember !\u003d null","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 otherMember.getName().equals(getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same identity and data fields.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" * This defines a stronger notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Member otherMember \u003d (Member) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return name.equals(otherMember.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 telegram.equals(otherMember.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 room.equals(otherMember.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 tags.equals(otherMember.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" return Objects.hash(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":18,"starchypotatocode":29,"-":78}},{"path":"src/main/java/hallpointer/address/model/member/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s name in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":64}},{"path":"src/main/java/hallpointer/address/model/member/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Tests that a {@code Member}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public boolean test(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(member.getName().fullName, keyword));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":39}},{"path":"src/main/java/hallpointer/address/model/member/Room.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s room in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRoom(String)}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Room {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Room should be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+/[0-9]+/[0-9]+$\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * Constructs an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" * @param room A valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public Room(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidRoom(room), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" value \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidRoom(String test) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Room otherRoom \u003d (Room) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherRoom.value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":48}},{"path":"src/main/java/hallpointer/address/model/member/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s telegram in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Telegram {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" \"Telegram must only contain alphanumeric characters or underscores\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" + \"and be between 5 to 32 characters long\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" + \", starting with a letter and not ending with a underscore\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" + \"@ is not required as it is implicitly assumed to be there\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":64}},{"path":"src/main/java/hallpointer/address/model/member/UniqueMemberList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A list of members that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A member is considered unique by comparing using {@code Member#isSameMember(Member)}. As such, adding and updating of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * members uses Member#isSameMember(Member) for equality so as to ensure that the member being added or updated is","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * unique in terms of identity in the UniqueMemberList. However, the removal of a member uses Member#equals(Object) so","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * as to ensure that the member with exactly the same fields will be removed.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * @see Member#isSameMember(Member)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberList implements Iterable\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if the list contains an equivalent member as the given argument.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public boolean contains(Member toCheck) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return internalList.stream().anyMatch(toCheck::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void add(Member toAdd) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" if (!target.isSameMember(editedMember) \u0026\u0026 contains(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" internalList.set(index, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Removes the equivalent member from the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" public void remove(Member toRemove) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(UniqueMemberList replacement) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of this list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" if (!membersAreUnique(members)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public Iterator\u003cMember\u003e iterator() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" return internalList.iterator();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof UniqueMemberList)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList otherUniqueMemberList \u003d (UniqueMemberList) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" return internalList.equals(otherUniqueMemberList.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" return internalList.toString();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code members} contains only unique members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" private boolean membersAreUnique(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" for (int i \u003d 0; i \u003c members.size() - 1; i++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" for (int j \u003d i + 1; j \u003c members.size(); j++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" if (members.get(i).isSameMember(members.get(j))) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":150}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/DuplicateMemberException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation will result in duplicate Members (Members are considered duplicates if they have the same","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" * identity).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"public class DuplicateMemberException extends RuntimeException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" public DuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" super(\"Operation would result in duplicate members\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/MemberNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation is unable to find the specified member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"public class MemberNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6}},{"path":"src/main/java/hallpointer/address/model/session/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":" * Represents a date in the system.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"public class Date {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" \"Dates should be in the format dd MMM yyyy (e.g. 24 Sep 2024)\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Desired date format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" public final LocalDate fullDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" public Date(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" fullDate \u003d parseDate(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid date according to the specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" DATE_FORMATTER.parse(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * Parses a valid date string into a LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" * @return A LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" public static LocalDate parseDate(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" return LocalDate.parse(date, DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * Returns the date as a formatted string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" return fullDate.format(DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" return fullDate.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"keithxun":82}},{"path":"src/main/java/hallpointer/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":" * Represents a Session in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"public class Session {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" private final SessionName sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" private final int points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" private final Date date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" // Data fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" private final Set\u003cMember\u003e members \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" public Session(SessionName sessionName, Date date, int points, Set\u003cMember\u003e members) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" requireAllNonNull(sessionName, date, points, members);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" this.sessionName \u003d sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" this.points \u003d points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public SessionName getSessionName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public int getPoints() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" * Returns an immutable member set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" public Set\u003cMember\u003e getMembers() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" return Collections.unmodifiableSet(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" * Updates the set of members in the session.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * @param newMembers New set of members.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" public Session updateMembers(Set\u003cMember\u003e newMembers) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" return new Session(this.sessionName, this.date, this.points, newMembers);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" * This defines a weaker notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" public boolean isSameSession(Session otherSession) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" if (otherSession \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" return otherSession !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 otherSession.getSessionName().equals(getSessionName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" * This defines a stronger notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"keithxun"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSession.sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 points \u003d\u003d otherSession.points","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 members.equals(otherSession.members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"keithxun"},"content":" return Objects.hash(sessionName, points, members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"keithxun"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"keithxun"},"content":" .add(\"sessionName\", sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"keithxun"},"content":" .add(\"points\", points)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"keithxun"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"keithxun"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":109}},{"path":"src/main/java/hallpointer/address/model/session/SessionName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":" * Represents a Session\u0027s name in the application.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSessionName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"public class SessionName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" \"Session names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" * The first character of the session name must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" public final String sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code SessionName}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" * @param name A valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" public SessionName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidSessionName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" sessionName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" public static boolean isValidSessionName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof SessionName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" SessionName otherSessionName \u003d (SessionName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSessionName.sessionName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" return sessionName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":66}},{"path":"src/main/java/hallpointer/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static Member[] getSampleMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" return new Member[] {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Alex Yeoh\"), new Telegram(\"alex_yeoh98\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"12/04/201\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"subcommLeader\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Bernice Yu\"), new Telegram(\"BobLim23\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"5/03/102\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"competitionLeader\", \"achiever\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Charlotte Oliveiro\"), new Telegram(\"oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/02/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team1\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"David Li\"), new Telegram(\"davidLiOnly\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"14/06/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team3\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Irfan Ibrahim\"), new Telegram(\"ibrahim_irfan\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/05/323\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Roy Balakrishnan\"), new Telegram(\"roy_da_bomb\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"8/04/258\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" for (Member sampleMember : getSampleMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" sampleAb.addMember(sampleMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":26,"-":33}},{"path":"src/main/java/hallpointer/address/storage/JsonAdaptedMember.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * Jackson-friendly version of {@link Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"class JsonAdaptedMember {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Member\u0027s %s field is missing!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final String telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final String room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonAdaptedMember} with the given member details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @JsonProperty(\"room\") String room,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" * Converts a given {@code Member} into this class for Jackson use.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(Member source) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" room \u003d source.getRoom().value;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Converts this Jackson-friendly adapted member object into the model\u0027s {@code Member} object.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public Member toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" final List\u003cTag\u003e memberTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" memberTags.add(tag.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" if (room \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" final Room modelRoom \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(memberTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" return new Member(modelName, modelTelegram, modelRoom, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":36,"-":62}},{"path":"src/main/java/hallpointer/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"Members list contains duplicate member(s).\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final List\u003cJsonAdaptedMember\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"members\") List\u003cJsonAdaptedMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" members.addAll(source.getMemberList().stream().map(JsonAdaptedMember::new).collect(Collectors.toList()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" for (JsonAdaptedMember jsonAdaptedMember : members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d jsonAdaptedMember.toModelType();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (addressBook.hasMembers(member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":12,"-":48}},{"path":"src/main/java/hallpointer/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-w14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":101}},{"path":"src/main/java/hallpointer/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" private MemberListPanel memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" private StackPane memberListPanelPlaceholder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" memberListPanel \u003d new MemberListPanel(logic.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" memberListPanelPlaceholder.getChildren().add(memberListPanel.getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel getMemberListPanel() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" return memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see hallpointer.address.logic.Logic#execute(String)","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":190}},{"path":"src/main/java/hallpointer/address/ui/MemberCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * An UI component that displays information of a {@code Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"public class MemberCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListCard.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" private Label telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private Label room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberCode} with the given {@code Member} and index to display.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public MemberCard(Member member, int displayedIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" name.setText(member.getName().fullName);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" telegram.setText(member.getTelegram().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" room.setText(member.getRoom().value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":42}},{"path":"src/main/java/hallpointer/address/ui/MemberListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Panel containing the list of members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListPanel.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final Logger logger \u003d LogsCenter.getLogger(MemberListPanel.class);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" @FXML","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private ListView\u003cMember\u003e memberListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel(ObservableList\u003cMember\u003e memberList) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" super(FXML);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setItems(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setCellFactory(listView -\u003e new MemberListViewCell());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Member} using a {@code MemberCard}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" class MemberListViewCell extends ListCell\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" protected void updateItem(Member member, boolean empty) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" super.updateItem(member, empty);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" if (empty || member \u003d\u003d null) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" setText(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" } else {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(new MemberCard(member, getIndex() + 1).getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":49}},{"path":"src/main/java/hallpointer/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * An ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":27}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"#filterField, #memberListPanel, #memberWebpage {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":351}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" \u003cVBox fx:id\u003d\"memberList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" \u003cStackPane fx:id\u003d\"memberListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":57}},{"path":"src/main/resources/view/MemberListCard.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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"room\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$room\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":32}},{"path":"src/main/resources/view/MemberListPanel.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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" \u003cListView fx:id\u003d\"memberListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":6}},{"path":"src/test/java/hallpointer/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.core.index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" final Index fifthMemberIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(fifthMemberIndex));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(5.0f));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":7,"-":60}},{"path":"src/test/java/hallpointer/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" String deleteCommand \u003d \"delete_member 9\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" String listCommand \u003d ListMembersCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"taggyhan"},"content":" CommandResult result \u003d logic.execute(listCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"taggyhan"},"content":" System.out.println(result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(listCommand, ListMembersCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" String addCommand \u003d AddMemberCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(expectedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"taggyhan":6,"starchypotatocode":14,"-":156}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code AddMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandIntegrationTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" public void execute_newMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new AddMemberCommand(validMember), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" String.format(AddMemberCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" validMember.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" validMember.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" validMember.getTelegram().value),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(new AddMemberCommand(memberInList), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":13,"-":33}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMemberCommand(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public void execute_memberAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" ModelStubAcceptingMemberAdded modelStub \u003d new ModelStubAcceptingMemberAdded();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" CommandResult commandResult \u003d new AddMemberCommand(validMember).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" assertEquals(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" String.format(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" AddMemberCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" validMember.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" validMember.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" validMember.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" ),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(validMember), modelStub.membersAdded);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(validMember);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" ModelStub modelStub \u003d new ModelStubWithMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER, () -\u003e addMemberCommand.execute(modelStub));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" Member alice \u003d new MemberBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" Member bob \u003d new MemberBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommand \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addBobCommand \u003d new AddMemberCommand(bob);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommandCopy \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddMemberCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, addMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"taggyhan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"taggyhan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"taggyhan"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that contains a single member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubWithMember extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" private final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" ModelStubWithMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"starchypotatocode"},"content":" return this.member.isSameMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that always accept the member being added.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubAcceptingMemberAdded extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"starchypotatocode"},"content":" final ArrayList\u003cMember\u003e membersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"starchypotatocode"},"content":" return membersAdded.stream().anyMatch(member::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":" membersAdded.add(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":13,"starchypotatocode":50,"-":148}},{"path":"src/test/java/hallpointer/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"happyAmy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bobTheTrain\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_AMY \u003d \"10/10/9\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_BOB \u003d \"3/1/90\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_AMY \u003d \" \" + PREFIX_ROOM + VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_BOB \u003d \" \" + PREFIX_ROOM + VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"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","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"#\"; // \u0027#\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_ROOM_DESC \u003d \" \" + PREFIX_ROOM + \"1/1/1a\"; // \u0027a\u0027 npt allowed in rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":" public static final UpdateMemberCommand.UpdateMemberDescriptor DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" public static final UpdateMemberCommand.UpdateMemberDescriptor DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" DESC_AMY \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" DESC_BOB \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" * - the address book, filtered member list and selected member in {@code actualModel} remain unchanged","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" * Updates {@code model}\u0027s filtered list to show only the member at the given {@code targetIndex} in the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public static void showMemberAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d model.getFilteredMemberList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" final String[] splitName \u003d member.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(1, model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":5,"starchypotatocode":27,"-":91}},{"path":"src/test/java/hallpointer/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" showNoMember(expectedModel);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteSecondCommand \u003d new DeleteMemberCommand(INDEX_SECOND_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommandCopy \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d DeleteMemberCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, deleteMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" private void showNoMember(Model model) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(p -\u003e false);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(model.getFilteredMemberList().isEmpty());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":10,"starchypotatocode":37,"-":81}},{"path":"src/test/java/hallpointer/address/logic/commands/FindMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.CARL;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ELLE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.FIONA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code FindMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommand \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findSecondCommand \u003d new FindMemberCommand(secondPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommandCopy \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void execute_zeroKeywords_noMemberFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywords_multipleMembersFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywordsOutOfOrder_multipleMembersFound() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Elle Kurz Kunz\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findMemberCommand \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d FindMemberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, findMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":68}},{"path":"src/test/java/hallpointer/address/logic/commands/ListMembersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListMembersCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"public class ListMembersCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(new ListMembersCommand(), model, ListMembersCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(new ListMembersCommand(), model, ListMembersCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":4,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/UpdateMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for UpdateMemberCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(editedMember).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Index indexLastMember \u003d Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member lastMember \u003d model.getFilteredMemberList().get(indexLastMember.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" MemberBuilder memberInList \u003d new MemberBuilder(lastMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" Member editedMember \u003d memberInList.withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(indexLastMember, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(lastMember, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" Member memberInFilteredList \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder(memberInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" Member firstMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(firstMember).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_SECOND_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, UpdateMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" // edit member in filtered list into a duplicate in address book","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(INDEX_SECOND_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder(memberInList).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, UpdateMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"taggyhan"},"content":" final UpdateMemberCommand standardCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor copyDescriptor \u003d new UpdateMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand commandWithSameValues \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, copyDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"taggyhan"},"content":" assertFalse(standardCommand.equals(new UpdateMemberCommand(INDEX_SECOND_MEMBER, DESC_AMY)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"taggyhan"},"content":" assertFalse(standardCommand.equals(new UpdateMemberCommand(INDEX_FIRST_MEMBER, DESC_BOB)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(index, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"taggyhan"},"content":" String expected \u003d UpdateMemberCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", UpdateMemberDescriptor\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"taggyhan"},"content":" + updateMemberDescriptor + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"taggyhan"},"content":" assertEquals(expected, updateMemberCommand.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"taggyhan":44,"starchypotatocode":35,"-":111}},{"path":"src/test/java/hallpointer/address/logic/commands/UpdateMemberDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberDescriptorTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptorWithSameValues \u003d new UpdateMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" String expected \u003d UpdateMemberDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" + updateMemberDescriptor.getName().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" + \", telegram\u003d\" + updateMemberDescriptor.getTelegram().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" + \", room\u003d\" + updateMemberDescriptor.getRoom().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" + \", tags\u003d\" + updateMemberDescriptor.getTags().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" assertEquals(expected, updateMemberDescriptor.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":16,"starchypotatocode":3,"-":47}},{"path":"src/test/java/hallpointer/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND, new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMemberMultipleTags \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMemberMultipleTags));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String validExpectedMemberString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" // multiple rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, ROOM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" // note that this will fail if the Message part does not have the prefixes sorted in lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" validExpectedMemberString + TELEGRAM_DESC_AMY + NAME_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_ROOM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_NAME_DESC,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" // missing room prefix","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":74,"-":96}},{"path":"src/test/java/hallpointer/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberUtil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand command \u003d (AddMemberCommand) parser.parseCommand(MemberUtil.getAddCommand(member));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new AddMemberCommand(member), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand command \u003d (DeleteMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.COMMAND_WORD + \" \" + INDEX_FIRST_MEMBER.getOneBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new DeleteMemberCommand(INDEX_FIRST_MEMBER), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(member).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand command \u003d (UpdateMemberCommand) parser.parseCommand(UpdateMemberCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" + INDEX_FIRST_MEMBER.getOneBased() + \" \" + MemberUtil.getUpdateMemberDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" assertEquals(new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d (FindMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new FindMemberCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"taggyhan"},"content":" assertTrue(parser.parseCommand(ListMembersCommand.COMMAND_WORD) instanceof ListMembersCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"taggyhan"},"content":" assertTrue(parser.parseCommand(ListMembersCommand.COMMAND_WORD + \" 3\") instanceof ListMembersCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":10,"starchypotatocode":18,"-":73}},{"path":"src/test/java/hallpointer/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" public void tokenize_multipleWhitespaceTrimmed() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" String argsString \u003d \" -t Meow \\t Woof \\t\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, dashT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Optional.of(\"Meow Woof\"), argMultimap.getValue(dashT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":150}},{"path":"src/test/java/hallpointer/address/logic/parser/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * outside of the DeleteMemberCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * same path through the DeleteMemberCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"1\", new DeleteMemberCommand(INDEX_FIRST_MEMBER));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":24}},{"path":"src/test/java/hallpointer/address/logic/parser/FindMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" private FindMemberCommandParser parser \u003d new FindMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand expectedFindMemberCommand \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":25}},{"path":"src/test/java/hallpointer/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+hisrocks\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d \"elephant\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d \"8/7/23\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoom((String) null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoom(INVALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithoutWhitespace_returnsRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(VALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithWhitespace_returnsTrimmedRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" String roomWithWhitespace \u003d WHITESPACE + VALID_ROOM + WHITESPACE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(roomWithWhitespace));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":138}},{"path":"src/test/java/hallpointer/address/logic/parser/UpdateMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" private UpdateMemberCommandParser parser \u003d new UpdateMemberCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" assertParseFailure(parser, \"1\", UpdateMemberCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS); // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROOM_DESC, Room.MESSAGE_CONSTRAINTS); // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram followed by valid room","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Member} being edited,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_ROOM_DESC + VALID_TELEGRAM_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" // telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" // room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" // AddMemberCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND + TELEGRAM_DESC_AMY + ROOM_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"taggyhan":21,"starchypotatocode":51,"-":125}},{"path":"src/test/java/hallpointer/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void resetData_withDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" // Two members with the same identity fields","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e newMembers \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub newData \u003d new AddressBookStub(newMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasMembers(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void getMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{members\u003d\" + addressBook.getMemberList() + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" * A stub ReadOnlyAddressBook whose members list can violate interface constraints.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e members \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub(Collection\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" this.members.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":75}},{"path":"src/test/java/hallpointer/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" modelManager.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withMember(ALICE).withMember(BENSON).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":116}},{"path":"src/test/java/hallpointer/address/model/member/MemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e member.getTags().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void isSameMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" Member editedBob \u003d new MemberBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" editedBob \u003d new MemberBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member aliceCopy \u003d new MemberBuilder(ALICE).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d Member.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", room\u003d\" + ALICE.getRoom()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":64}},{"path":"src/test/java/hallpointer/address/model/member/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // Two matching keywords, out of order","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\", \"Alice\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // Keywords match telegram and room, but does not match name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aliceinwonderland\", \"1/2/3\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").withTelegram(\"aliceinwonderland\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/2/3\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":73}},{"path":"src/test/java/hallpointer/address/model/member/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":59}},{"path":"src/test/java/hallpointer/address/model/member/RoomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class RoomTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Room(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidRoom_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidRoom \u003d \"\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Room(invalidRoom));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Room.isValidRoom(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"\")); // empty string","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"//\")); // slashes only","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"-1/2/3\")); // invalid number","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/0.2/3\")); // invalid decimal","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/\")); // missing numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2\")); // insufficient input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3 2 3\")); // no slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"/1/2/3/\")); // too many slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/3/4\")); // incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3/2/3 0\")); // also incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // valid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/3\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/0\")); // 0 is also acceptable here","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000/2000/3000\")); // long room numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000000000000/9/9\")); // duplicate numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d new Room(\"1/2/3\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(new Room(\"1/2/3\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(5.0f));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(new Room(\"2/3/4\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":68}},{"path":"src/test/java/hallpointer/address/model/member/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: length \u0026 character set","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"eeee\")); // less than 5 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"r456e\u0026\")); // non-underscore symbols","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"ben ten\")); // spaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"cccccdddddeeeeefffffggggghhhhhiii\")); // more than 33 characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_\")); // certain regexes fail this","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: starting and ending requirements","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"_aaaaaa\")); // start cannot be underscores","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"1aaaaaa\")); // start cannot be numberic","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"tota1\")); // end cannot be numeric","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" // valid telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"AAAAA\")); // exactly 5 chars, just caps","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"bbbbbbbb\")); // just lowercase","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A22W_f_wfe3\")); // numbers and underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A_____A\")); // consecutive underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\")); // exactly 32 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"Ra_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a\")); // certain regexes may fail this too","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d new Telegram(\"vegetable\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(new Telegram(\"vegetable\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(new Telegram(\"banana\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":69}},{"path":"src/test/java/hallpointer/address/model/member/UniqueMemberListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Collections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberListTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList uniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void contains_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.contains(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberNotInList_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void add_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.add(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void add_duplicateMember_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.add(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullTargetMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(null, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullEditedMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(ALICE, null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_targetMemberNotInList_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.setMember(ALICE, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberIsSameMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasSameIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasDifferentIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasNonUniqueIdentity_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMember(ALICE, BOB));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void remove_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.remove(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void remove_memberDoesNotExist_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.remove(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void remove_existingMember_removesMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.remove(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullUniqueMemberList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((UniqueMemberList) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_uniqueMemberList_replacesOwnListWithProvidedUniqueMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(expectedUniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((List\u003cMember\u003e) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e memberList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_listWithDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e listWithDuplicateMembers \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMembers(listWithDuplicateMembers));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" -\u003e uniqueMemberList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(uniqueMemberList.asUnmodifiableObservableList().toString(), uniqueMemberList.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":175}},{"path":"src/test/java/hallpointer/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Tests whether the SampleDataUtil\u0027s data remain valid after changes elsewhere.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleMembers_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleMembers);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21}},{"path":"src/test/java/hallpointer/address/storage/JsonAdaptedMemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.storage.JsonAdaptedMember.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class JsonAdaptedMemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d BENSON.getRoom().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_validMemberDetails_returnsMember() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(BENSON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(BENSON, member.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(INVALID_NAME, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(null, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, INVALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, null, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, INVALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Room.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, null, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, VALID_ROOM, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":37,"-":55}},{"path":"src/test/java/hallpointer/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.HOON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.IDA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidAndValidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(HOON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" original.removeMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(IDA);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":99}},{"path":"src/test/java/hallpointer/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.JsonUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.TypicalMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private static final Path TYPICAL_MEMBERS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalMembersAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" private static final Path INVALID_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final Path DUPLICATE_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_typicalMembersFile_success() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_MEMBERS_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" AddressBook typicalMembersAddressBook \u003d TypicalMembers.getTypicalAddressBook();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(addressBookFromFile, typicalMembersAddressBook);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidMemberFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_duplicateMembers_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_MEMBER,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":13,"-":34}},{"path":"src/test/java/hallpointer/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":67}},{"path":"src/test/java/hallpointer/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withMember(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Adds a new {@code Member} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public AddressBookBuilder withMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":29}},{"path":"src/test/java/hallpointer/address/testutil/MemberBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building Member objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"beeHappy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":" public static final String DEFAULT_ROOM \u003d \"5/2/207\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberBuilder} with the default details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" room \u003d new Room(DEFAULT_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * Initializes the MemberBuilder with the data of {@code memberToCopy}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder(Member memberToCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" name \u003d memberToCopy.getName();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d memberToCopy.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" room \u003d memberToCopy.getRoom();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" tags \u003d new HashSet\u003c\u003e(memberToCopy.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTags(String ... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public Member build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return new Member(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":31,"-":52}},{"path":"src/test/java/hallpointer/address/testutil/MemberUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A utility class for Member.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberUtil {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Returns an add command string for adding the {@code member}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public static String getAddCommand(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" return AddMemberCommand.COMMAND_WORD + \" \" + getMemberDetails(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code member}\u0027s details.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static String getMemberDetails(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_NAME + member.getName().fullName + \" \");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_TELEGRAM + member.getTelegram().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_ROOM + member.getRoom().value + \" \");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream().forEach(","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" * Returns the part of command string for the given {@code UpdateMemberDescriptor}\u0027s details.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" public static String getUpdateMemberDescriptorDetails(UpdateMemberDescriptor descriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getTelegram().ifPresent(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getRoom().ifPresent(room -\u003e sb.append(PREFIX_ROOM).append(room.value).append(\" \"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":3,"starchypotatocode":18,"-":39}},{"path":"src/test/java/hallpointer/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" * Returns the middle index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size() / 2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Returns the last index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" * Returns the member in the {@code model}\u0027s member list at {@code index}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" public static Member getMember(Model model, Index index) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList().get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":47}},{"path":"src/test/java/hallpointer/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_FIRST_MEMBER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_SECOND_MEMBER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_THIRD_MEMBER \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":9}},{"path":"src/test/java/hallpointer/address/testutil/TypicalMembers.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * A utility class containing a list of {@code Member} objects to be used in tests.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class TypicalMembers {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ALICE \u003d new MemberBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/3/20\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"PauLice\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BENSON \u003d new MemberBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/10/95\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"benson_meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final Member CARL \u003d new MemberBuilder().withName(\"Carl Kurz\").withTelegram(\"kurZ0123\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/8/10\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public static final Member DANIEL \u003d new MemberBuilder().withName(\"Daniel Meier\").withTelegram(\"whisperWhiz23\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/3/3\").withTags(\"friends\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ELLE \u003d new MemberBuilder().withName(\"Elle Meyer\").withTelegram(\"meyer_for_lif3\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"4/5/55\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" public static final Member FIONA \u003d new MemberBuilder().withName(\"Fiona Kunz\").withTelegram(\"FIONAKUNZ\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"8/10/300\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final Member GEORGE \u003d new MemberBuilder().withName(\"George Best\").withTelegram(\"B357650463\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"90/2/8\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static final Member HOON \u003d new MemberBuilder().withName(\"Hoon Meier\").withTelegram(\"meier__5002\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/7/45\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public static final Member IDA \u003d new MemberBuilder().withName(\"Ida Mueller\").withTelegram(\"idaMueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/4/38\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" // Manually added - Member\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public static final Member AMY \u003d new MemberBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BOB \u003d new MemberBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" private TypicalMembers() {} // prevents instantiation","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code AddressBook} with all the typical members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" for (Member member : getTypicalMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" ab.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static List\u003cMember\u003e getTypicalMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":37}},{"path":"src/test/java/hallpointer/address/testutil/UpdateMemberDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" * A utility class to help with building UpdateMemberDescriptor objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberDescriptorBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" private UpdateMemberDescriptor descriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder(UpdateMemberDescriptor descriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" this.descriptor \u003d new UpdateMemberDescriptor(descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" * Returns an {@code UpdateMemberDescriptor} with fields containing {@code member}\u0027s details","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder(Member member) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" descriptor.setName(member.getName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" descriptor.setTelegram(member.getTelegram());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" descriptor.setRoom(member.getRoom());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" descriptor.setTags(member.getTags());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Name} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Telegram} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Room} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withRoom(String room) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" descriptor.setRoom(new Room(room));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code UpdateMemberDescriptor}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"taggyhan"},"content":" * that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"taggyhan"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"taggyhan"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"taggyhan"},"content":" return descriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"taggyhan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":77}}] diff --git a/AY2425S1-CS2103T-W14-3_tp_master/commits.json b/AY2425S1-CS2103T-W14-3_tp_master/commits.json index 0f45e9ea..f0326fdb 100644 --- a/AY2425S1-CS2103T-W14-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-W14-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yuvrajaryan":[{"date":"2024-09-30","commitResults":[{"hash":"e05eaa37e6dcde26cf217648ecec7d95f05fd900","isMergeCommit":false,"messageTitle":"Modifies AboutUs.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":43}}},{"hash":"19ae4355aa190a237a1952fac38ae9de9811531b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task4.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8871260e48537451163835075c788b2645c547e9","isMergeCommit":false,"messageTitle":"Update Target User Profile and Value Proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"c19e396b3b0c27797b6679cea2312e6dda5ee9f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into targetuserprofile","messageBody":"","fileTypesAndContributionMap":{}}]}],"taggyhan":[{"date":"2024-09-30","commitResults":[{"hash":"69a11b3e92fd097ea248fd90d6adef0b2ac5e16a","isMergeCommit":false,"messageTitle":"Add Tag\u0027s Details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"5b0acf96dfc73b41e64cb9cdf4906bd5631fc77b","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr-haichen\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb554550cc3c1c9ba9f1534ad84e911946649a89","isMergeCommit":true,"messageTitle":"Merge pull request #22 from QinHaichen12/branch-AboutUs","messageBody":"Update Haichen\u0027s details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8296e8cc27af588c64fe7b24f2a37fc7981097cf","isMergeCommit":true,"messageTitle":"Update Aboutme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17e2bf5a7ef8ef712a0490cf25475e0810ccdda3","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":57}}},{"hash":"a96aa341d9b5c61447aa7e2fe8d9743d10a01bdd","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e2a96c0fd778305b901178aff373f7e967785f83","isMergeCommit":true,"messageTitle":"Merge pull request #39 from starchypotatocode/branch-Update-Website","messageBody":"Week 7 Task 2 - B","fileTypesAndContributionMap":{}},{"hash":"7de788513c8dfd493a4fed00d1438415d24e3956","isMergeCommit":true,"messageTitle":"Merge pull request #36 from starchypotatocode/branch-Update-Sources","messageBody":"Week 7 Task 2 - A2 \u0026 A3","fileTypesAndContributionMap":{}},{"hash":"c5e95bcb747d12db89b730dd04e79bc36a26638d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fac2b25383da897a4d1014ac07e12b537eb458b6","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yuvrajaryan/targetuserprofile","messageBody":"Update Target User Profile and Value Proposition","fileTypesAndContributionMap":{}},{"hash":"d87e94d1e26e4646af0fb225c350fe2067171ff2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a915bf2a017665d0714f146892576edd9c4dd13b","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":3}}},{"hash":"84eddd0ecede83ef919dca45321faf6b0e1ebd1b","isMergeCommit":false,"messageTitle":"Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":6}}},{"hash":"7b6eaf6d333303a9074dcd48975c795a17437997","isMergeCommit":true,"messageTitle":"Merge pull request #40 from keithxun/branch-NFR","messageBody":"Branch nfr","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"8ba74263f5736f26e27f7f647f915302ab8d9fb6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from starchypotatocode/branch-RenameClasses","messageBody":"Rename Command classes","fileTypesAndContributionMap":{}}]}],"QinHaichen12":[{"date":"2024-09-28","commitResults":[{"hash":"cf641cf7dabbbaf4a44f5b0448a1c512fab3f581","isMergeCommit":true,"messageTitle":"Merge pull request #14 from QinHaichen12/branch-Add-Photo","messageBody":"add photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"7082fd1c4629fe70e2f822822a634424afa00d01","isMergeCommit":false,"messageTitle":"add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"a879979e50b2115ec7f58a8569e59100a4589440","isMergeCommit":false,"messageTitle":"add personal md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6d9bd1e939fb30fdf8bd1a135b6c7c0c0d0ffebd","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"010a8acf2c457b42ef9170a9a3690049ae3e904f","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"65cf8617cc169ed01053e0cf0e5b415242dc057a","isMergeCommit":false,"messageTitle":"add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":232,"deletions":34}}},{"hash":"af204fb05cae9cd5183cd5479a0b8db940398966","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taggyhan/branch-glossary","messageBody":"Week 7 Task 3 - Compile Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"be8517c1d3f500bb1d8f897041d8d03b96e43f24","isMergeCommit":true,"messageTitle":"Merge pull request #54 from keithxun/branch-Add-Session","messageBody":"Branch add session","fileTypesAndContributionMap":{}},{"hash":"ea327312a56574b26b77cc0b92b36a03471a6aac","isMergeCommit":true,"messageTitle":"Merge pull request #50 from starchypotatocode/branch-EditMemberFields","messageBody":"Change fields of Member and update tests","fileTypesAndContributionMap":{}}]}],"starchypotatocode":[{"date":"2024-09-23","commitResults":[{"hash":"b47310fccafd5f50ba98c58dfa4065ca13356d63","isMergeCommit":false,"messageTitle":"Rename packages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":81},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":59,"deletions":59}}}]},{"date":"2024-09-24","commitResults":[{"hash":"301e145882f4f5f4a889904a6c47182e531a78bd","isMergeCommit":false,"messageTitle":"Rename classes to fit package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":395,"deletions":395},"other":{"insertions":177,"deletions":177},"docs":{"insertions":80,"deletions":80},"test-code":{"insertions":548,"deletions":548}}},{"hash":"4a975bd01ecc9ce44d9f1b07c29584e7ee62eb32","isMergeCommit":false,"messageTitle":"Fix comments and variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":35},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":82,"deletions":82}}},{"hash":"1d11525fdc0e346458300116f0b2bc7063396998","isMergeCommit":false,"messageTitle":"Update website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"e6a60e54d1afa0e90d599c7d311ebbe333c049b9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from starchypotatocode/branch-v1.0","messageBody":"v1.0","fileTypesAndContributionMap":{}},{"hash":"ed7ed041a6cfe87c73b80ef0b750f90219b83139","isMergeCommit":false,"messageTitle":"Change AboutUs names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-27","commitResults":[{"hash":"92fcc94bc9d64d410b237e97e25036956f4028af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-W14-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60d3f58b49e884a8972377667a2bd77eb1f34890","isMergeCommit":true,"messageTitle":"Merge pull request #10 from yuvrajaryan/addphoto","messageBody":"Add Aryan\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"2f98f232223f185b293e0f49fb49082891385bb0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from keithxun/branch-Add-Photo","messageBody":"Add a photo of Keith","fileTypesAndContributionMap":{}},{"hash":"3e36f60ee4a3dc6031d14ee8c74bea903759b3f8","isMergeCommit":true,"messageTitle":"Merge pull request #8 from starchypotatocode/branch-Add-Photo","messageBody":"Add Daniel\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"0e9273599eb74368cc45ad3fa8857f6d666c5a27","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taggyhan/branch-Add-Photo","messageBody":"Add Tag Han\u0027s Pic","tags":["v1.0.1"],"fileTypesAndContributionMap":{}},{"hash":"9fd08a6a669af92c3db84bf3b31a58d5cdbaabe1","isMergeCommit":false,"messageTitle":"Add details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"8c9095fb924f07ed6efb3718392b574fa280c6ac","isMergeCommit":false,"messageTitle":"Add portfolio to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"831120388f1c3ee3e34511a3a142d9168da0a7db","isMergeCommit":true,"messageTitle":"Merge pull request #20 from keithxun/branch-Aboutus","messageBody":"Update Keith details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"44ee4f79414e2404625701c7ab2925d22feb2974","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3abfdb899c67e1425a38a107b7818caef67d990","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yuvrajaryan/task4.1","messageBody":"Modify AboutUs.md file","fileTypesAndContributionMap":{}},{"hash":"c0a78f10c0134cd458cbaa7acd6179df4423d438","isMergeCommit":true,"messageTitle":"Merge pull request #35 from taggyhan/branch-update-about-me","messageBody":"Update Tag\u0027s details in AboutUs.md ","fileTypesAndContributionMap":{}},{"hash":"647c87494fd71e8668c640f5f91e40df31ab6b3c","isMergeCommit":false,"messageTitle":"Update badge links and add credits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"9888dad6eb0265bb5996d491de53e082b439fb02","isMergeCommit":true,"messageTitle":"Merge pull request #37 from keithxun/branch-UserStories","messageBody":"Branch user stories","fileTypesAndContributionMap":{}},{"hash":"7405f64e17421382912d82a1ec4d95fddb9f87f1","isMergeCommit":false,"messageTitle":"Fix formatting errors and change .jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":23,"deletions":15}}},{"hash":"4dbbedb6d5826e48962475b4b46c145a749565d4","isMergeCommit":false,"messageTitle":"Delete dead files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":8}}}]},{"date":"2024-10-01","commitResults":[{"hash":"dc738ebc0372719684a0543b2876ff7692539dca","isMergeCommit":false,"messageTitle":"Fix website GitHub link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"62a5a1fb148f6749ff7f0f5e1295f8e4fb9367fe","isMergeCommit":true,"messageTitle":"Merge pull request #43 from starchypotatocode/branch-Fix-Website-Link","messageBody":"Fix website GitHub link","fileTypesAndContributionMap":{}},{"hash":"c1921041ef3060e5b31b4b05717b9ca4d4d08138","isMergeCommit":true,"messageTitle":"Merge pull request #44 from QinHaichen12/branch-UIMockup","messageBody":"Week 7 Task 2 - A1","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"8e0824f49b5080ed9c8dc7b24289ea5142f1cf6a","isMergeCommit":true,"messageTitle":"Merge pull request #45 from QinHaichen12/branch-UseCase","messageBody":"Week 7 Task 3 - Create Use Cases","fileTypesAndContributionMap":{}},{"hash":"c69ce5a23aa0fb74651cabe0569ddb19b85abcfb","isMergeCommit":true,"messageTitle":"Merge pull request #42 from taggyhan/branch-index","messageBody":"Week 7 Task 2 - A4","fileTypesAndContributionMap":{}},{"hash":"7d83beeedbd2228b0a100a1a22b0017533469e92","isMergeCommit":false,"messageTitle":"Fix CI Status Link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c0a5b94707b121a4846aee7c5f67362eae1fc1c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from starchypotatocode/branch-Update-Sources","messageBody":"Fix CI Status Link","fileTypesAndContributionMap":{}},{"hash":"25e98925ac95993895eceb6a2f4f0d9ef961324a","isMergeCommit":false,"messageTitle":"Change README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":10}}}]},{"date":"2024-10-08","commitResults":[{"hash":"3a6e8f653c37aad2d1ba28348feea7a1bcd6c1f4","isMergeCommit":false,"messageTitle":"Rename Address.java and comments to Room.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"other":{"insertions":10,"deletions":10},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":124}}},{"hash":"adc4891f4ecc0c1f0aca665c9267f5ba5955abd9","isMergeCommit":false,"messageTitle":"Rename variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6e41dd0ce1f50f8cd0d4a4f0ffd092ec39f5c4de","isMergeCommit":false,"messageTitle":"Delete Email.java field from Member.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":181},"docs":{"insertions":8,"deletions":12},"test-code":{"insertions":111,"deletions":328}}},{"hash":"2c6b908545f71236a5b720a8ea81332f564de7a3","isMergeCommit":false,"messageTitle":"Update Room validity criteria and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":57,"deletions":31}}},{"hash":"d39d472b9a59c8be1712fc0499f084aca5d8dc08","isMergeCommit":false,"messageTitle":"Change Phone to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":72},"other":{"insertions":14,"deletions":14},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":214,"deletions":207}}}]},{"date":"2024-10-09","commitResults":[{"hash":"079847b0d7722c169888e6613d5cb03f3e55a909","isMergeCommit":false,"messageTitle":"Fix terminology error in class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":136},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":209,"deletions":209}}},{"hash":"c98083200e8492ae47e34e7e44e0a3e652b1201a","isMergeCommit":false,"messageTitle":"Change regex validation for Telegram","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":22},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":61,"deletions":30}}},{"hash":"5541c33aa86180a40af272b30c96393c1d39baa2","isMergeCommit":false,"messageTitle":"Improve tokenizer whitespace processing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"a9a62678e8d934e5daa0ff9461cd95b8d5347ab0","isMergeCommit":false,"messageTitle":"Rename Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":185,"deletions":177},"test-code":{"insertions":30,"deletions":30}}}]}],"keithxun":[{"date":"2024-09-30","commitResults":[{"hash":"999b31999d9ded164855192e9492a6339cdf04ba","isMergeCommit":false,"messageTitle":"Update Keith details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"6fe8bba7c005f5eeda5e26bcffd3bf8c29c1d922","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71b1cdb42d0c6cda3332059913066121ca480653","isMergeCommit":false,"messageTitle":"Update portfolio page for Keith","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}},{"hash":"200edf6a4ff983bc8d7d1b2084d2ec191965d687","isMergeCommit":true,"messageTitle":"Merge pull request #21 from starchypotatocode/branch-Update-About-Us","messageBody":"Update Daniel details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"af7e3d6470bb153eaf1c13f93a6c3b796563d7d1","isMergeCommit":false,"messageTitle":"Initial transfer of user stories to the repository","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":99,"deletions":74}}},{"hash":"7bb6e5c5ad341fa1a27011aa206727e3597b930a","isMergeCommit":false,"messageTitle":"Organise by user types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":35}}},{"hash":"f88a83c8b50b1c0634014340e56b88ca1ac8f652","isMergeCommit":false,"messageTitle":"Organise by priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":61}}},{"hash":"111fb6c2620bf2e46f36ff12ef3fc5d62d51e71b","isMergeCommit":false,"messageTitle":"Remove irrelevant user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":35}}},{"hash":"795933aea6b3b5354f628fff6d9df4a662fc055b","isMergeCommit":false,"messageTitle":"Made initial changes to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-10-01","commitResults":[{"hash":"d62594d92924d3a123ce621cc73462ca714db39a","isMergeCommit":false,"messageTitle":"Made minor change to non-functional requirement section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1708f20cc8c271badb65a0c5ef250c1e1bb01778","isMergeCommit":true,"messageTitle":"Merge pull request #47 from starchypotatocode/branch-Update-Sources","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"30463c198af77f2305303ecd227e84d8cac4612e","isMergeCommit":false,"messageTitle":"Add SessionName and Session classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"other":{"insertions":574,"deletions":0}}},{"hash":"ef4c6b30f0d2cb56524067c8b2f87c7220ba367b","isMergeCommit":false,"messageTitle":"Remove all files from bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":574}}},{"hash":"eeceb7ceef30bf76307f09e7032494c89a27bb7a","isMergeCommit":false,"messageTitle":"Dummy point class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"97fd294a177ce003c89697451ba98e3e277988b7","isMergeCommit":false,"messageTitle":"Update session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":1}}},{"hash":"5bedb0fc0e1e72bbfbe2cf41fc0e294080c7e9d7","isMergeCommit":false,"messageTitle":"Remove session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"4a4b3453a2265067a9b84432b1d1cd50d6714098","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a784bbba59e112be470e1abd9883d0f921a0d4e4","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":13}}}]},{"date":"2024-10-10","commitResults":[{"hash":"48de6d62e088f1bc6e744267e48402f3a8390916","isMergeCommit":false,"messageTitle":"Add date class for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":0}}},{"hash":"8b077c2ed71ccd72b28980a58040e3e0c4b532c6","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"yuvrajaryan":{"docs":6,"functional-code":0,"test-code":0},"taggyhan":{"docs":166,"functional-code":0,"test-code":0},"QinHaichen12":{"docs":211,"functional-code":0,"test-code":0},"starchypotatocode":{"docs":115,"functional-code":785,"test-code":1209,"other":3},"keithxun":{"docs":162,"functional-code":257,"test-code":0}},"authorContributionVariance":{"yuvrajaryan":478.3576,"taggyhan":754.60547,"QinHaichen12":3114.175,"starchypotatocode":447616.28,"keithxun":91148.31},"authorDisplayNameMap":{"yuvrajaryan":"CS2103T-W14-3 YUVR..INGH","taggyhan":"CS2103T-W14-3 TAN .. HAN","QinHaichen12":"CS2103T-W14-3 QIN ..CHEN","starchypotatocode":"CS2103T-W14-3 LAI ..NIEL","keithxun":"CS2103T-W14-3 ONG ..EITH"}} +{"authorDailyContributionsMap":{"yuvrajaryan":[{"date":"2024-09-30","commitResults":[{"hash":"e05eaa37e6dcde26cf217648ecec7d95f05fd900","isMergeCommit":false,"messageTitle":"Modifies AboutUs.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":43}}},{"hash":"19ae4355aa190a237a1952fac38ae9de9811531b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task4.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8871260e48537451163835075c788b2645c547e9","isMergeCommit":false,"messageTitle":"Update Target User Profile and Value Proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"c19e396b3b0c27797b6679cea2312e6dda5ee9f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into targetuserprofile","messageBody":"","fileTypesAndContributionMap":{}}]}],"taggyhan":[{"date":"2024-09-30","commitResults":[{"hash":"69a11b3e92fd097ea248fd90d6adef0b2ac5e16a","isMergeCommit":false,"messageTitle":"Add Tag\u0027s Details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"5b0acf96dfc73b41e64cb9cdf4906bd5631fc77b","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr-haichen\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb554550cc3c1c9ba9f1534ad84e911946649a89","isMergeCommit":true,"messageTitle":"Merge pull request #22 from QinHaichen12/branch-AboutUs","messageBody":"Update Haichen\u0027s details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8296e8cc27af588c64fe7b24f2a37fc7981097cf","isMergeCommit":true,"messageTitle":"Update Aboutme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17e2bf5a7ef8ef712a0490cf25475e0810ccdda3","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":57}}},{"hash":"a96aa341d9b5c61447aa7e2fe8d9743d10a01bdd","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e2a96c0fd778305b901178aff373f7e967785f83","isMergeCommit":true,"messageTitle":"Merge pull request #39 from starchypotatocode/branch-Update-Website","messageBody":"Week 7 Task 2 - B","fileTypesAndContributionMap":{}},{"hash":"7de788513c8dfd493a4fed00d1438415d24e3956","isMergeCommit":true,"messageTitle":"Merge pull request #36 from starchypotatocode/branch-Update-Sources","messageBody":"Week 7 Task 2 - A2 \u0026 A3","fileTypesAndContributionMap":{}},{"hash":"c5e95bcb747d12db89b730dd04e79bc36a26638d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fac2b25383da897a4d1014ac07e12b537eb458b6","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yuvrajaryan/targetuserprofile","messageBody":"Update Target User Profile and Value Proposition","fileTypesAndContributionMap":{}},{"hash":"d87e94d1e26e4646af0fb225c350fe2067171ff2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a915bf2a017665d0714f146892576edd9c4dd13b","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":3}}},{"hash":"84eddd0ecede83ef919dca45321faf6b0e1ebd1b","isMergeCommit":false,"messageTitle":"Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":6}}},{"hash":"7b6eaf6d333303a9074dcd48975c795a17437997","isMergeCommit":true,"messageTitle":"Merge pull request #40 from keithxun/branch-NFR","messageBody":"Branch nfr","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"8ba74263f5736f26e27f7f647f915302ab8d9fb6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from starchypotatocode/branch-RenameClasses","messageBody":"Rename Command classes","fileTypesAndContributionMap":{}},{"hash":"acceceabe24ae858655a6a1d459aa6d1e7b77c1a","isMergeCommit":false,"messageTitle":"Fix Error in CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":21},"docs":{"insertions":1,"deletions":19}}}]},{"date":"2024-10-12","commitResults":[{"hash":"e06150cd4b50c7e5cedb988f471de6cf3333581f","isMergeCommit":false,"messageTitle":"Refactor all commands to match feature spec and intrdouce new room number handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":39},"other":{"insertions":78,"deletions":67},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4d7dfab87806ab0efd6d251a10fdcaa4982d7d17","isMergeCommit":false,"messageTitle":"Fix Bug in Git","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0},"test-code":{"insertions":1,"deletions":1}}},{"hash":"d00234ad00c66a9f6e785d5536eb103a2e097f72","isMergeCommit":false,"messageTitle":"Set executable permission for run-checks.sh","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"d6b859a13da2bc6f40291a1e9554b7eb79cc1f01","isMergeCommit":false,"messageTitle":"Set executable permission for all check scripts","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"db9a7a27c0445274d14c8753dbc5d3a08058ed71","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":81,"deletions":81},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":101,"deletions":98}}},{"hash":"3775f751a6b5d0d55e21ececb933817b6bf1e07b","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"ae6b6531f7b211cfde759fa9ebba068cc3a1e1eb","isMergeCommit":false,"messageTitle":"Fix Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":64,"deletions":46}}},{"hash":"de6ecc93dcbbbae334ee11736e809b0f3f761575","isMergeCommit":false,"messageTitle":"Fix typo in LogicSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"QinHaichen12":[{"date":"2024-09-28","commitResults":[{"hash":"cf641cf7dabbbaf4a44f5b0448a1c512fab3f581","isMergeCommit":true,"messageTitle":"Merge pull request #14 from QinHaichen12/branch-Add-Photo","messageBody":"add photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"7082fd1c4629fe70e2f822822a634424afa00d01","isMergeCommit":false,"messageTitle":"add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"a879979e50b2115ec7f58a8569e59100a4589440","isMergeCommit":false,"messageTitle":"add personal md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6d9bd1e939fb30fdf8bd1a135b6c7c0c0d0ffebd","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"010a8acf2c457b42ef9170a9a3690049ae3e904f","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"65cf8617cc169ed01053e0cf0e5b415242dc057a","isMergeCommit":false,"messageTitle":"add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":232,"deletions":34}}},{"hash":"af204fb05cae9cd5183cd5479a0b8db940398966","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taggyhan/branch-glossary","messageBody":"Week 7 Task 3 - Compile Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"be8517c1d3f500bb1d8f897041d8d03b96e43f24","isMergeCommit":true,"messageTitle":"Merge pull request #54 from keithxun/branch-Add-Session","messageBody":"Branch add session","fileTypesAndContributionMap":{}},{"hash":"ea327312a56574b26b77cc0b92b36a03471a6aac","isMergeCommit":true,"messageTitle":"Merge pull request #50 from starchypotatocode/branch-EditMemberFields","messageBody":"Change fields of Member and update tests","fileTypesAndContributionMap":{}}]}],"starchypotatocode":[{"date":"2024-09-23","commitResults":[{"hash":"b47310fccafd5f50ba98c58dfa4065ca13356d63","isMergeCommit":false,"messageTitle":"Rename packages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":81},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":59,"deletions":59}}}]},{"date":"2024-09-24","commitResults":[{"hash":"301e145882f4f5f4a889904a6c47182e531a78bd","isMergeCommit":false,"messageTitle":"Rename classes to fit package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":395,"deletions":395},"other":{"insertions":177,"deletions":177},"docs":{"insertions":80,"deletions":80},"test-code":{"insertions":548,"deletions":548}}},{"hash":"4a975bd01ecc9ce44d9f1b07c29584e7ee62eb32","isMergeCommit":false,"messageTitle":"Fix comments and variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":35},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":82,"deletions":82}}},{"hash":"1d11525fdc0e346458300116f0b2bc7063396998","isMergeCommit":false,"messageTitle":"Update website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"e6a60e54d1afa0e90d599c7d311ebbe333c049b9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from starchypotatocode/branch-v1.0","messageBody":"v1.0","fileTypesAndContributionMap":{}},{"hash":"ed7ed041a6cfe87c73b80ef0b750f90219b83139","isMergeCommit":false,"messageTitle":"Change AboutUs names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-27","commitResults":[{"hash":"92fcc94bc9d64d410b237e97e25036956f4028af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-W14-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60d3f58b49e884a8972377667a2bd77eb1f34890","isMergeCommit":true,"messageTitle":"Merge pull request #10 from yuvrajaryan/addphoto","messageBody":"Add Aryan\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"2f98f232223f185b293e0f49fb49082891385bb0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from keithxun/branch-Add-Photo","messageBody":"Add a photo of Keith","fileTypesAndContributionMap":{}},{"hash":"3e36f60ee4a3dc6031d14ee8c74bea903759b3f8","isMergeCommit":true,"messageTitle":"Merge pull request #8 from starchypotatocode/branch-Add-Photo","messageBody":"Add Daniel\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"0e9273599eb74368cc45ad3fa8857f6d666c5a27","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taggyhan/branch-Add-Photo","messageBody":"Add Tag Han\u0027s Pic","tags":["v1.0.1"],"fileTypesAndContributionMap":{}},{"hash":"9fd08a6a669af92c3db84bf3b31a58d5cdbaabe1","isMergeCommit":false,"messageTitle":"Add details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"8c9095fb924f07ed6efb3718392b574fa280c6ac","isMergeCommit":false,"messageTitle":"Add portfolio to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"831120388f1c3ee3e34511a3a142d9168da0a7db","isMergeCommit":true,"messageTitle":"Merge pull request #20 from keithxun/branch-Aboutus","messageBody":"Update Keith details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"44ee4f79414e2404625701c7ab2925d22feb2974","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3abfdb899c67e1425a38a107b7818caef67d990","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yuvrajaryan/task4.1","messageBody":"Modify AboutUs.md file","fileTypesAndContributionMap":{}},{"hash":"c0a78f10c0134cd458cbaa7acd6179df4423d438","isMergeCommit":true,"messageTitle":"Merge pull request #35 from taggyhan/branch-update-about-me","messageBody":"Update Tag\u0027s details in AboutUs.md ","fileTypesAndContributionMap":{}},{"hash":"647c87494fd71e8668c640f5f91e40df31ab6b3c","isMergeCommit":false,"messageTitle":"Update badge links and add credits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"9888dad6eb0265bb5996d491de53e082b439fb02","isMergeCommit":true,"messageTitle":"Merge pull request #37 from keithxun/branch-UserStories","messageBody":"Branch user stories","fileTypesAndContributionMap":{}},{"hash":"7405f64e17421382912d82a1ec4d95fddb9f87f1","isMergeCommit":false,"messageTitle":"Fix formatting errors and change .jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":23,"deletions":15}}},{"hash":"4dbbedb6d5826e48962475b4b46c145a749565d4","isMergeCommit":false,"messageTitle":"Delete dead files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":8}}}]},{"date":"2024-10-01","commitResults":[{"hash":"dc738ebc0372719684a0543b2876ff7692539dca","isMergeCommit":false,"messageTitle":"Fix website GitHub link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"62a5a1fb148f6749ff7f0f5e1295f8e4fb9367fe","isMergeCommit":true,"messageTitle":"Merge pull request #43 from starchypotatocode/branch-Fix-Website-Link","messageBody":"Fix website GitHub link","fileTypesAndContributionMap":{}},{"hash":"c1921041ef3060e5b31b4b05717b9ca4d4d08138","isMergeCommit":true,"messageTitle":"Merge pull request #44 from QinHaichen12/branch-UIMockup","messageBody":"Week 7 Task 2 - A1","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"8e0824f49b5080ed9c8dc7b24289ea5142f1cf6a","isMergeCommit":true,"messageTitle":"Merge pull request #45 from QinHaichen12/branch-UseCase","messageBody":"Week 7 Task 3 - Create Use Cases","fileTypesAndContributionMap":{}},{"hash":"c69ce5a23aa0fb74651cabe0569ddb19b85abcfb","isMergeCommit":true,"messageTitle":"Merge pull request #42 from taggyhan/branch-index","messageBody":"Week 7 Task 2 - A4","fileTypesAndContributionMap":{}},{"hash":"7d83beeedbd2228b0a100a1a22b0017533469e92","isMergeCommit":false,"messageTitle":"Fix CI Status Link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c0a5b94707b121a4846aee7c5f67362eae1fc1c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from starchypotatocode/branch-Update-Sources","messageBody":"Fix CI Status Link","fileTypesAndContributionMap":{}},{"hash":"25e98925ac95993895eceb6a2f4f0d9ef961324a","isMergeCommit":false,"messageTitle":"Change README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":10}}}]},{"date":"2024-10-08","commitResults":[{"hash":"3a6e8f653c37aad2d1ba28348feea7a1bcd6c1f4","isMergeCommit":false,"messageTitle":"Rename Address.java and comments to Room.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"other":{"insertions":10,"deletions":10},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":124}}},{"hash":"adc4891f4ecc0c1f0aca665c9267f5ba5955abd9","isMergeCommit":false,"messageTitle":"Rename variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6e41dd0ce1f50f8cd0d4a4f0ffd092ec39f5c4de","isMergeCommit":false,"messageTitle":"Delete Email.java field from Member.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":181},"docs":{"insertions":8,"deletions":12},"test-code":{"insertions":111,"deletions":328}}},{"hash":"2c6b908545f71236a5b720a8ea81332f564de7a3","isMergeCommit":false,"messageTitle":"Update Room validity criteria and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":57,"deletions":31}}},{"hash":"d39d472b9a59c8be1712fc0499f084aca5d8dc08","isMergeCommit":false,"messageTitle":"Change Phone to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":72},"other":{"insertions":14,"deletions":14},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":214,"deletions":207}}}]},{"date":"2024-10-09","commitResults":[{"hash":"079847b0d7722c169888e6613d5cb03f3e55a909","isMergeCommit":false,"messageTitle":"Fix terminology error in class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":136},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":209,"deletions":209}}},{"hash":"c98083200e8492ae47e34e7e44e0a3e652b1201a","isMergeCommit":false,"messageTitle":"Change regex validation for Telegram","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":22},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":61,"deletions":30}}},{"hash":"5541c33aa86180a40af272b30c96393c1d39baa2","isMergeCommit":false,"messageTitle":"Improve tokenizer whitespace processing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"a9a62678e8d934e5daa0ff9461cd95b8d5347ab0","isMergeCommit":false,"messageTitle":"Rename Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":185,"deletions":177},"test-code":{"insertions":30,"deletions":30}}}]},{"date":"2024-10-12","commitResults":[{"hash":"746198c5c922e03754c6ae2b5bed8a4c6a4d1f4c","isMergeCommit":true,"messageTitle":"Merge pull request #62 from taggyhan/branch-update-commands","messageBody":"Refactor all commands to match feature spec ","fileTypesAndContributionMap":{}}]}],"keithxun":[{"date":"2024-09-30","commitResults":[{"hash":"999b31999d9ded164855192e9492a6339cdf04ba","isMergeCommit":false,"messageTitle":"Update Keith details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"6fe8bba7c005f5eeda5e26bcffd3bf8c29c1d922","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71b1cdb42d0c6cda3332059913066121ca480653","isMergeCommit":false,"messageTitle":"Update portfolio page for Keith","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}},{"hash":"200edf6a4ff983bc8d7d1b2084d2ec191965d687","isMergeCommit":true,"messageTitle":"Merge pull request #21 from starchypotatocode/branch-Update-About-Us","messageBody":"Update Daniel details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"af7e3d6470bb153eaf1c13f93a6c3b796563d7d1","isMergeCommit":false,"messageTitle":"Initial transfer of user stories to the repository","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":99,"deletions":74}}},{"hash":"7bb6e5c5ad341fa1a27011aa206727e3597b930a","isMergeCommit":false,"messageTitle":"Organise by user types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":35}}},{"hash":"f88a83c8b50b1c0634014340e56b88ca1ac8f652","isMergeCommit":false,"messageTitle":"Organise by priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":61}}},{"hash":"111fb6c2620bf2e46f36ff12ef3fc5d62d51e71b","isMergeCommit":false,"messageTitle":"Remove irrelevant user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":35}}},{"hash":"795933aea6b3b5354f628fff6d9df4a662fc055b","isMergeCommit":false,"messageTitle":"Made initial changes to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-10-01","commitResults":[{"hash":"d62594d92924d3a123ce621cc73462ca714db39a","isMergeCommit":false,"messageTitle":"Made minor change to non-functional requirement section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1708f20cc8c271badb65a0c5ef250c1e1bb01778","isMergeCommit":true,"messageTitle":"Merge pull request #47 from starchypotatocode/branch-Update-Sources","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"30463c198af77f2305303ecd227e84d8cac4612e","isMergeCommit":false,"messageTitle":"Add SessionName and Session classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"other":{"insertions":574,"deletions":0}}},{"hash":"ef4c6b30f0d2cb56524067c8b2f87c7220ba367b","isMergeCommit":false,"messageTitle":"Remove all files from bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":574}}},{"hash":"eeceb7ceef30bf76307f09e7032494c89a27bb7a","isMergeCommit":false,"messageTitle":"Dummy point class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"97fd294a177ce003c89697451ba98e3e277988b7","isMergeCommit":false,"messageTitle":"Update session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":1}}},{"hash":"5bedb0fc0e1e72bbfbe2cf41fc0e294080c7e9d7","isMergeCommit":false,"messageTitle":"Remove session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"4a4b3453a2265067a9b84432b1d1cd50d6714098","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a784bbba59e112be470e1abd9883d0f921a0d4e4","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":13}}}]},{"date":"2024-10-10","commitResults":[{"hash":"48de6d62e088f1bc6e744267e48402f3a8390916","isMergeCommit":false,"messageTitle":"Add date class for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":0}}},{"hash":"8b077c2ed71ccd72b28980a58040e3e0c4b532c6","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"yuvrajaryan":{"docs":6,"functional-code":0,"test-code":0},"taggyhan":{"docs":149,"functional-code":142,"test-code":214},"QinHaichen12":{"docs":211,"functional-code":0,"test-code":0},"starchypotatocode":{"docs":114,"functional-code":700,"test-code":1024,"other":3},"keithxun":{"docs":162,"functional-code":257,"test-code":0}},"authorContributionVariance":{"yuvrajaryan":458.5064,"taggyhan":23096.342,"QinHaichen12":2987.1938,"starchypotatocode":431535.97,"keithxun":87534.9},"authorDisplayNameMap":{"yuvrajaryan":"CS2103T-W14-3 YUVR..INGH","taggyhan":"CS2103T-W14-3 TAN .. HAN","QinHaichen12":"CS2103T-W14-3 QIN ..CHEN","starchypotatocode":"CS2103T-W14-3 LAI ..NIEL","keithxun":"CS2103T-W14-3 ONG ..EITH"}} diff --git a/archive.zip b/archive.zip index 6645662974bcb448a142fdf1f5e753cc774a79d2..b348756cea5121ec5ee6dd81243fe87ea9f7854d 100644 GIT binary patch delta 982407 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%0A1;00k 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

qDueSolC+7ya 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,n(PO*VjMO&0YvqF?HITt4At3?G<0j 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

`?)X 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%0AX4Zo;^kl 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ⅅ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

AsR0h2{+-nXYRDSZHUNgu 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

s43UAOi{`)cisf?3efK!L&Dcj0JA zJi^8JMar?-O#^3>Q}O-IORoZ)Hco}YTX+@+XQ$#Cx-V{~7jD1e&CY)w=>EV3JB_B3 zusW2|ek1o}WxtrD2&(J><`0kO|858mh3eQw*8$#Koc^TFb(qQ!dDVANaq}kU0R{;x zR(9tBhKNT^mE?v63}ViP&!4*iH%Z1D-g z^0bIgsI^($GA>zS2|^IY^9@4aL;b)Ogn&o%4?^hY?v`XAub*}-6ewP|;te@wp%4{LMZTvdRz8Q~4O`42huon% z@n!=ti#IJ}7M3mJlBG4rEZ(dyW--`Zd(dLA>mRk4h4orr(Iu1APM!edgdgWdM=3Au6w zHF|i@>p%>4$$<$0r|=)dAI-OT@mD_oVE`2vLJovP+@bq0fJzRT{f7ZmKxlCwIk<$eQH@iUf)c^dW-MQghQ^$*j)H&NjIm7_QSEI9b8*)!3B(nDxLA9X z!bX*ezsSopU*xo38=z%#7V%y)@N<8yUnW%EV%GndBbB z+j)OH8oHRZ-bm%W2R6EIPi2GCdQc4I+B79}nRMN?XrnT#oJ=QZQ+tfqhatV z9L=NrV=5Xc5DvG4cs!oZ!kba#y8R7=_@aLfrEeE&+Io?@SnDlx-q8m59nFgpj5bvo zL+Xnc!A0&*+$MAJgESDg|5+*=EG4@W^;;!TdG1$bbs#lsq8HmtJ!^9se-Z-~o=+?! zH-~e4c%V@io%ouFGf{vzJ1WzFG&WSRZ67D`zvq!&h~W5;2?veRwAh*aHg9Z9V{3m6 z6c5f|$}}Jx&U+CY4tdlieAG%%SF6g1v1x&%WPvNZ9R zQGmcPyAqH*yCQ00o1*~n@;qs`LHJ4fMIeRZ=ab1V#tBfkJWH7VM0=OH zU)ft|>upnGZkt+byLzIw>!i9N_WW{ZfKG<;4!sgp>gDs%GtqNcV255BP^Cb5@t8ft zS$|St7+^99FzLzy$aJMpkqZjt9YaBhR`L(Ipio{g6qL|fWx)l9@^qo#NLhcCnD(1r z$Vg_vPQB8hGizs0aq|C5w{~)ys)k-U@mu+ND7Ch@AjkKUAPnaD9pv~>-5MW?+XxeQ zdZU*7i0K3W=74bQ ztSL^Z&@Y3`H&cc##w1U}uZw>%Z73pNt@38XZmWE+25&^FZV*L_*I!244zr?g?XMTT zD{UyM)2f^nd7M>IJl_t}{LTCnGx|(0n+ekvLv$oeLlJ9w@{5Pq;=G1{ZHtNIB5I2{ zeNmWGglmhv9>r-xp$bZGadDj#n_SeL@@+GvN=9!pua^(=d^nS52s3~7?eanx3RP1L z8K(GiF3jVhUOsbL?QpVuB$T)PAd6<(vJB+*p-6z#Ii(*b*?cM=rlaARaLPiNqOnMe zbZ!q}280Tm_%0Z$(Qd=ML_j7aq1EU_h_C{%`PV|)q5 z)WV}PvUvLQNxn}~!~}m{*1I{(?BO&NZ+7<39#y{X9$_dBHh)so9w*#b>W^7EkK|Fj zNoEhlYjf}rev0xaL=iBpJ&=35(p;eZPH@hR=fUNJ&n*6`Up7mV$^E(wAkMSFWdLFNjGxXvMQIuj z>zf6UuJtfCM#b=IZIS1C=NiRj)o7R~I(K1g$z~Q$s3b9DP|Pd=0ws9q)TD$leKjc| zWfi8yQ0nwW5UU>cw~^2X4?<~;gtCw(wmxI@rHX-|>F$3xWrh~Pzi1&eaA_BmO$rGt z8D%k4zl})_2{agdf`~C;aE(P_3tGK$6z{;j;s&CA##JDdE|50XYJcQZ9K{9kd?Gj;7l(ujm=2@g%MBNWrmD=CV zvsp6MHy;I37T!yP9)&}B@rcLMk;+t(-+xTzX^?!b%|4<|poL=Bg_eB@)hiv62-W}X zi#XsK>zQDB3+{si(^(WRD4G{SmwPgvB@#!4N#}o4t~~9jD_AWiTKOrNrb2!xl8UQm z@?=~++YX%m4iyhI@M_>uXH)`mdp1-=lsIe!kx~~Dk=uu%BBIi68i=&!l9-yj6)Gx< zqOG8kYE(i}>XZvl8_&7FJoa1#-f-a)msVe6fztr0aB4fT-;3XUkgV{W6q%x`j(kTM z&nkb>$t=odHlmYJav$HmcrX8Z5>CSVD7_S)v~ZosU(glHi2~tt9Po!>Uw0TEiB4~l zr1$-Q%_p%~-}yA2MQJ~r#{K;)i_$z9AXI-mQg;;Rk$VZ#j35fzMZ%)?rhg*-DE4jH z?4KSofh7>B zIKWDljc_u|`Um+R;048T(O?Po{(cOXP{fuM<@Ho@3}D( z$XeQ9KHWb#;)ZOsLjMXM#s3CxUcKC91Fz5H(dp&!&c=`Qv6Z*Rq(97Yo{crz+#V_xCmMJij@0@b;21-X_6u^CK5 z5mde1xq2JjC24dN-a2OgMn0kMp^Sf^$c4fQNh&-hFi<$h2}a1rWi*~1#%>NT0whG? z@@NVuTw|pRt5~A_;ZPeRrXvCcZV+S|)`uvYkKAN)12|QRKtF>(d>?1JB(iA@Y3>FT z*g*hBg%VyYCtxfT>F6#h^Az9T0##AmrY6ubt#SjQ9ZJLs1%Vv&dMEO~P1k>Pbjc`A zd>s}YvEYgv5H!0D(uXJPN2Y&1KCF*UFT_Z=Vr_Ne&;0``S9dv z%+u)l=MA*Bv^8pN46<303Nh;cUjfG0yNmqWT<}_31QXt3BbmWbf<#tu8c*Yaq`_)! z0TvgcT*Mk#N@=jxSLFgR@sxi!9;=aD_j?`Q^8=>Qsqh-+)K$j)EI9mla`M~t@!9p! zKMs!0FOSboO$ICDlfA2F!})mpD83ggOykuvcd7<{mx2j*z!~iy+Gk|F4=&~ws-Ff! z_2Vw43DNoR91NJQ=O=yT;JI=9L}zDhKWjVzXsxh*LeSt77ZH9FbjDV>L7oG|+GTDxssb{aVxr%D^7F{Bd z29czc2|JmSlQB~tvQeDPDo1SP1*@;^!u79b9}a`>#2J+T`!47(xyH`zS63nOJc^FFqa|h(B)U@c>7xi8cw;NHEzyh!2WsD7b%e-gzKtxp~B@`O<;ZmxVl0 z={Q-Oz&0k3bc2IPpsX_dE{sR>G!owL0@k}U85g(F)xhz#KGgj?@tWovHaDV7?42h^IffV{NG+#TqIfi7`srq9m?Dom=#l^9--Ifz+&ZV0Z z3DZ|Gg<5>6t0+UUg<6D_0mC~mIhA=L#m2siN3%%$;@l^a-qH0~B6(DQ%ul3~$g}C9 zNSFd8`eNoB_nZLx>J@l95I}b{<7J*=WSxC)tDk>HAY!aW9}r(i zh#iY*DAW)%v?aphm=sE@Jkk+mif>CtKNQoJ_~c!jj^z)+`U6P1ei4|ff}LQJEFZS> zCY3eHCTMVls)Q!j>Mn|gH?le8IM@4)288T zH_(3xO{j9{vG{H((-HD#-SOffM82uU*^+uK%y(b5Z>`Qq{>zT$gLke9e#)XK_}?}^ zq?bDv+rdGu+KRs_;LiG30#exJclX#LoNQ`7jk00ZEB_)kKbH=>E z@ztS!CQ2Hns`4I7FjdVBAW{4z<}mBVmhqP7RNT0#@R@2hI0(gv19~wi5XV9_bb}JZ zAJ%XxF<6OJ9T;9UMwuGn{;**+h7*yw)fi=UsLj7uJ?<_P8D$3an2}SFRcF;ol~M4s zgoX$MLglesV{rtBXxbB}E5lTo{86-VXACEQJ=?ez!`aZ-oH3a0tX_+iSE!=H)NWs3>&Jh@?5@21TVE>J>@i&R>l^$h zuCaeED(ztT)&7z)wFhwVue&7}g^3G)F6ouswW4g6>;Js2S9l83WFkJIIx+l^<;`^D zxl8V3k6mpQjGFqdg}J_YRKKUFSX}(3`j(kALN%yNIG+~Rh?K{MX_$uNAgWx=g>P^Z zHLVaATteH^0&ZC&DR_l{Q~XSJJcx&-NtLEk5ge|`;2lz39oI-af-vKLlfA8fOUN{- zD54foNa7lj>W~%J!c^R4)gOwkX|-j=i-~-!))#XTC_?qcTw71cV14l-IG(6BcV-T2 z@HrOiCRC)QXkLfpR1$?eG9@_(K0ibg;eLM-vcR=;6z+d&p}(u#zK|bA8KyQ3Xzs&7 z6b)*it3==seu~Vnk%f57TF&YuKhtLVjtHHN}-}U)wa^Qh0)TE-fks z>J@}3=X(HGAFDyx7-@ZKkf~!)@{A}H7+m<;lq|Gh->5f}YTIH*(cDTbhq zMbYa#q#sm-K1Iybu_)?TI6#+ad@rV6gbqtquIQmA?gx21Lpr&_F%qJGR79e=P}9iz zmxn<4-QloGkFjJIrqmUSZ@@r>HBlWjeQa9+V?}Bn;2k{NKKLv3&?1j;F z*NvPbp}6~$d!@<~R^o%~37A`b>0w`n_gQbNe1$QnjK-!(ocs9${Nm2j)e1wdUon}G`?k2M>r-=oAI*6g&^4=O4zCOeKS9zdM+z=l`C{4-0SAx70J1 zjOyr28lmWmSN~;rx*)h&R789wvko2KtVs^REt}mHabsqRwXRLICai=YN;0hra%wBHh|sNSz7cxyRVEm&;$Ee- zFCy4~`d?U%>=xI=sHwy&I>lXywFfh=!a2oE_gW|cm}w}^b{OcGKJ74u^Qrir7+AX} zo%fxgWN~Q^MQd@z1YB5VyCGhxPt6)E{@!yq*V5A(h(iQox2k%YRx5IStXj>SD6?9# zXC%XFtyYm8emsAFe6W9cq+954nJhR%nMp@~KxxEGLm`T|?X+B}PK(qg`AAjDd-|(N zZu;v>rrf5dozV3C&H(Hs?fVdpk3@L~&l6TuPKJ6fJiC$ASXn=f{ymS==roy}is6`a z9zA=BC&xPf7woUZ!&{jFcC3XW~>2vTt$%aPjtcl-sp0?AQ^1 zlZWejJ;oIWC7DU7j7gmIrB3e45<6#u)pGE%f6j zNjTGZ5b*XN?Q@W%|0H4ECTZ0F+dRI1h-R{U$#FbrdIHgl>r3~8GL;-~7Mab7jr8k) z{OQU=e%(K5$Z{aeg7Rd~pN>I)0J=VJLwRu8*UF0Lk)?i^skcZ=#)6ba?MY`!32_~5I3~5r%?`8Tf1}oQ2iV13M`^jx$GY*#6iPyBd{RRdWSl^&6;Z;7YE4qVT>fe2@kg z<=1%jKuX^urHuMEjwz1;wh6g-yVM?PM3x+!#(?c9`x#}*>E^(pEfh>Ci7Zt{p&r+Y;2G3eZ* zl5@njSxjAM(eYldPpQ5}m8$#ZMhfJ2w>WUMf`$aD#Mk_ zTX@|rZc=IbVo*S!|Tl^8=C3RTz*ykdB4={4SfDcBE&(OsyTO{?PZ zOh$E8)0>CzQxt^4;YjXub1A7tq%Dg_@->bJ>l-+(;-(URBa8@V%xD6wJV$96{f@`e zk*>#9-{i_6ctdfCpIJ7$&fYQY__lJU3fH{qs?kZjwpK%^9(S$^f6XOvMX zicgMYH`w0Qv&)A#D_S0856OHaj88I?ZQq2>9!0~xi=BtKz!cZoNlZ={)5~L~4Mp*o zxn-B)5o_6hU6s^(Q;-{^m4J=fr|4-&>tL7E=7?)hudEc}SQ}KfgWVR|)~INZvTFR5 zPg)1N-==aM>~2824tCe4UI)7y)USix77Dg-4oo>MiSY8zjNE1h$S024yih$P*I3*hFKKmKXx^J78AahFcnGt0&H@bX8`ZS-!o?QOEoo3s z=aw|qCN(Xo@XvG>hS4Z03aSc`orS5;xXmI9KBf;yb$?GuWH+H@*H{2JAaT31i>!x# zYm?XQMJI4E=%OWclMoM350_L7_=JSmUK`kdu@FOrd|YE~Qt#Sp^4vmPCMr{@SGT#e z>NHJRf*p@$QCdiG&cN&zWt@j}V6W5r21I!i`gn~+cmuc!uM<&jtB>c?p%~I4u?r4H zi;Pc;pD~K{H>#mYwR~J+ZLh}bu9kIRub%7X9Knp|Y&nhtyy#6PIi6IK8|6n-OVu!c z$l}TUsOT_PpVdf6%~a!MvUc71fs5Z^Kq^|xtxB9}Dw-lCpI1mo zwQ5}I+q(=6r$Zf(>d-(p2p^o{WO4<6|KP1hmFk+#21R}5aAX0Rc|`hgb`g$?02DVq zic8yYQg8ucsWl@UP48ke%2=p2+zgT`o5csvBeS zQAu@R%r~q(QZW}}RuB%5dga%Ds$4S#ED>?_2O(95G2LVK;HogD1F#2GdvT5B-8j-Q z*zd*fK1fy?N0xd;%2JRWWfEIDhxTjl_b`tJ#}sSN@#x5dH*#3e%Ua8X9+5SWd!;P=W4VNCZfpZODK&Rx~{8)4NawWT_)l)y}zHJpvN{ zR@LxOY#nR}WBPQkiN@2J>2F_Wxe4RrUM7__=7C)$`zti>`eZgz6~pUBiF@V13VN!O zwg8DYc>fp*>W*1e=bvGJJPapUIEn3xV)K1^ayisVE_10BJv_E8KU{65Qd(#(W_PFv zvhl7%@Nw6tY~iv;M!f?UG}`peB$*s_u6jtNi-_v6dd^a`eun3jIo<<4X92t1ug?#AI3xt788z)3$KYC6l)GuD2wA423B6w$pOOl?)M) z5tJRd%58&6l{m&zjwzw)-d_OFhN9%ij6DRg$VkrmCJm}HD)ACFfAshfh*GlHGhw8( zRj!ZDO~X{+>K}~ai^s_<{L(-FaP;o@AJ_YbhaZH7V~WR7+AY(u9-ZtTzh^>CZ%(e#+Ghdy@`ticij=Nd3P4WL6&G<8Y%rAH#|+-;IZ z{dh8rzVwgfe;aZRUJe*zVOC(3SE#6H?YDT4S~UCP+OBnfyfn}dt>dWybu~So8gyE; zr074;RY8A`9zQ4PFk95qF&%s;>eUSOyt%po&%J>nV^&NH>vSZ3dyeTa%5KwmI!jXB z=8nmdLNPTaaYB@HL$WntG$<_gJSZeHc!)+q3YKL2NgBv~kg3%Rjl={E3V68_s|lka z>bU$wRlYTUH@;AzKzy^p2t%PsVS3)$N6gc-bu*G*_TL{Ls%yaY{>g7ekn!r-{`fI? z8%2(eBD50-hmbI=Z_nN?vA#`if`f-7;R6e|cxVEvt}W%29q2DUw8Z8GW&xvE6W_v{;g^+$f-gx%1ED`|787{MHv#maq;Ue5`+vLs`Qydg z{nNwc1Rmzujj&&QaEaZW-EiN1I6gAb-lcKG3D)a9otC=CV7ZjdIy|~KC?BCfHSjV* zapG@(WrNI>e#l_ZmUAebqlP(%&vMOy!OZ0bu3;n8hZeI~Sa7asFxWq18ufc&n+D@< zFj&Og7B=jL`p{w;3!Be14F(%&Orw4`Y|~)e4F+3TSjmR{&>ve&#qbTdCc|JiOOvVJ zmAc6=?hJ!fmG)Fkq-s=4a}l3f%wuVRxu(H?aMfH)W5tzm&O?8iX(AB29@9_^M)&yC zu%&YG+=ln++5Zj4Q6@jL_ewZhvbnJO%Mbcn>d%T9D;$lI&(Sc5C&5Ji8>Trk80lip zODor4;jW&&84SYGbVK`0rw_@5ZK@20yqN0Jgfy5BbzA()W0*%fHQI~9lb{L*lzPIbP2?75^4xEVFXSSi3gFU5qR>=cO32GOq7I{I)S z*Xi`~`0}^wi^~tkr+-_nS3%9i)!f?7r09u#|NQ*y`1JBb%wc5$;dDANpzrLw5_Qkc%Aui2{vk#e|4<1ileDiMwRM>^M{w{p4Wnh%wP zXEC2k;ezz4*UPQ`jogTaLM}qKBZX?Bdbw{WE8-V0tu2{((jhAnRgJ7Heq@&w#`#cK zEL^gpukhO|(Fu0(VWGevjOSZ_j!GB`y`He;mf+l#&x5197A#YQefROFXcGMACs}Y% zWR-l~mYm6VaXQX&p1+*w?Iz8+-k1=>mgae|qoC$QFyfB&pP$4p`lCn+`4DCE(d=t5 zmXuy%R(dW)aZTk@;8b2q2OD*`a3;)RDjH*WJDZ0il^|D(KmTbh&^I!F|7#CjbJ(D8 zrTRehnXB$y&eUZqywZOyM0H!2-x({pT^0w?vuv9S)rLt7_mhYqtwsAm@^JqveHB(70NRGzgE^>M(K zkanyo1+rg*TdCTDUNvQZI=FQvW z=fvocWn~eW{1!4PXqSEqi4YXIgr7-Y-hy*RSW2{{4^b;7&J#E1E5g;%pWu7d09w_{9(6i8auWM&nTY zXg;}p2q*W^kVk7x=MRaB@_F~r=aVHzvR5fIaV?I26!FS!jTT-!oS*EZi6Y&qY3f%@!oqmDMB*ZTE+x(u{6~o|0GQ_1{<? zc?d)i5ZQsAoOM#BtLAJlN&p419sr&dVUuCbPK#%MCAU#`yvp~ece3Po+z!;Y%q?te zQj9MY)i6?*z43sKa2m2nvEVl4KD@+;#d?5QRkA3ygo=j%Fy2`$D zwy7q6o;ONBE?@E5&fwB>b26Ota)zURn5oY%=Ks&#-?th$RPibKvh!2MqDSDg&oJ0# zINN&!B6yZZ7sAp&WDc&e2%V20E{3+Q&+oG^8ds-1+937mU9x_9wkk37p9#-p& z^%2Zd=UuEg`sASVrr46mkD-$WtTlCLuElhOwO+OEy;P!z22NWOhK|`eFMSz7PYCUQ zwNOZ&l%Q~XE!3^$p#|mT+FT#mG8FdWqp^gZNemjxSbXz74b{WDv@2QAliy0iTlFnj zgQ7ybI;%*&ze;thKYJ&}sXNoVG7Dtz3d9XXx)x#G{1&L4B4_TJeB1@~3P=IU#j|Nu zs&)NNN`#v=ci{R+tu9eT*MXsPBPYjyr;22!@h36F(`-oOOQA-%xTB8^KLIVRI^ysw zwY2&aj^d&6MLtgMjF&&CuNA4|Jxt!Y5-Yz<@&kp(%vWzS#Lzivr|cY`O-+$3`XLxv zzGoaD%RjNqvat;ks9_)$P$ucMD)punw5Jgj3zq-1FO1(fob@bAx9BEyc=Y~%=<-Of z-lDe@(;`|8h?9N6{3@JsJ&hcHuY4jLa;&kU&7sz3QegH?wFrjY0K3GEtqB%H<3gAY zC0(oBB+fkY)s1CB2T^)54P`Y$t@^`Rbm5{k+)7putq&X;+D45PQz{C?mB};|`ex1O zqEN{vOD;-0sdZ9RqI6bGAOn1V7Emq1Y?JaUPt8c?v$MOm$$XLnF4R>1et(xHh$-O1t#i!t56=%7P>?_fZayFV5fZ z|8{hEt=vDZg@o8585JHx8Obyhs>>M_9+fh&=1%sm(;FE~cPPJB^U{icj5NY6g!a}2 z@f0%c7eE0 z!;RcZVcNpN@SG+Z4_duTgR?$6V<#s3MlZ=Q-650D2r(2g4TVN^7=1>V5wPi!{Lb@= zOyWTyQ2}niiG-;Am^P4qqIBKS0%C3x0V75AN?!6wCT^^{aK4H*&Vphj@w>mB+OPe8tS%z)=^<%aC9BLf zFMmsbCd`t!{)7jR$=bf;=3nCeuqeOJ$z+9BAPg)MDtZl?vhJ(G+1Dp&^(T#X8wTs2 zP=pQz(f(C;OI!u!!e{Glx9kjoJj&%jlCEq_!Qf1U?d4F;kWCgLxr?I|HbAjO6Y&c>-50uAZ`v0LnQv>>r^zwS zKI`$(lmQ*?6HfAnZYZ4aBOIzqY=MGo@rj`-w?0-yzn)#A<8C<$tKb?SmEPJWHult0sj zXQjq!@=*qVdnm^BCDjvn<;wR~ce+xXss5de3_dVL92dtQRNdM+tBz1?hFwt=(mTrQ zZppH9G+gv54l0+05MqT+HsItqoEc=bvH!w2@`|f4>-xy0#k?Animq& znw?UJ#&SkjGDH=Z$jvIDM|VV@ASu2@ScIX_w}YolYUa(@Ly!^lZK1IkiZCYnPGBpB z3P+=NaWooc7t`ogq3D|24C2`-o?mqRxcqg0#e0h>Rwb3++v?xQKlR*lBWx0=UhFhI zHArnHG8iuZXrOjj)1Em~Y(4~94obqNp}W-bTaqn|k66-7w~g7m-^2(cGrpNc_^GmU z|1?&8QwrJ}@*F_zW+x1S%hOG(T$Iur9Ufm+Yw2t1*h})-n7V;Z$u|p>u+5Y#&=W#` z6??T;qrGabyRvqO?x&boxvV`aD)}0oyd^`&u9!hd1{zNK0JRbf!5mNoU_PH^K0u|u z+|ZBSb>*}st`Ij+V~zk}tr(u3(V@_EBSu#WrunhCQdu&N*6d3`v_Iw4PZe`~FNQ9A zQ!Po?np~{`XxQ733XN7K(X6g2vtKKJn-J-gzzauF^Cfp#r^+8ss?B)IPW5t?+4h=3 z1M0W{nE3lL{-82s%kSV@>Idf!$)xzn;3kYZtn8?mVRijdD1fT09w(4>1}sntX`Xh-oOs z_i%VjpZD-?DwVcw(})K0yxw;u!**p4DKiZ2{^dV9fC( z5~q>Bcgo{{lGu)lul7O5V#(Ro-2WvU9;#hzY5mTooha#>b~e4amGEtUrg1BMOWr1p znCa=IJYYmkTx&(KQBTZY#z~);9A=F0iEAwMHo)jI*AO&;KJ#!s72gXBN}o!U>`s$8 zvqi~j$d}yy)tzKrd$KX58h)j2pH7V>;m$P0xtCh|iluVTF5VwK>70n`)%wMv;7Yft zW1FjU`0@Px@xlJ0SrVInQikcFm{QR&iYKnI7@sciL4DpXDoXiXw<;N`Io@Dk10#K6 zGNv$bll+p6L&WbYh)d&1g&r-Q%#t7s7TYO5VYUrn!VFb3*MwuNVHkIFkfn7k>G7`2 zD^wQ!)It{nsCt?jyD&G6JzOz>3aFWECR7^zv~4C-QO$Xgf$F7yxyC|m0_Q~rDt4~3 znYuIBxjrJRO|tHj zW#7F?AeEZztXKMf2lWma5jGrndLG=&XF)a&N24mT4xD$m0=$t60Ui>r;^s8&a6vX^ z+&jJ#lgh0(aVLhVsWIP!$iPO~^C#AYlLGx)X~RjG(;6=jq}psxe~Zb*B2`_ZSN8R# z8w|Y5t_dz;`?~9==pu4eV#8a-P>PL@#Z!w-Y7IJQSB%Yn+#7U2DzUzcC*i21in5vb zZPvAU zd74Y}S7Ayn#A5%FuQfp)%QI(_N>Tx};U!g0R?$k$I?YA{iKF$;kj2NMTp&E#&r)E~ zLp!bwt9+Y(ajO{KhvBg(R-$z?NeUnep@!L{ux6KlR+1ESYow@#3XF}d8Tz(jrC{@D ztLEM=q0bLSQJ9un;cc;HtPY@>W2R+-N{6jmn8yga+`<;M#*I7InC-OiDjJU@e1C!J zj=9#Xb$4Xrd8pG(ZQCQ6w5b+%Uta1N_mruy3}3f@^)amu;L>9Eos`yg5i0(z-bp*_ z{A#ZcZl?cQOV3w(O)%xE71_Sobm8K|-yvISoWJqfCdh}M;-=ShrZtmc+#PA-N-x@Y z(S_DN&Elh6lciXc;_ExRgf+F!r9z|Il9i6RhDbr3a;Xsg?F4Z^FFQdT3$YVz4dCy^ z?>++8hSSGro}O)YD#e#Bkl2j)@Nuay(Ogu@2j=gPt)*`%c@e^L@ps5 zB%@KJ8vC%}@J(nW3`J1*-8UulZ)^|GyLF$hG1w}OfTeXiF9QqGDvsb^w(i+DCbWtp z;A!2eacs7Vlb3LL`H)Sz{vJJkPSRm^F2|L{Vq8$yr!t`eqJ~6d!e~&~pnVrK+4k&z zKR?M^SYX`PzSg!sBcg{Q3+|L(!f1$EEww+ZTvFYMwFDqASHTnRNru-cl_r5Pu`o=A z?4?b(2DgVv|NN%cXkb7~2A=$hNTD?m;y0p0r4 zHCzp}a&k1uQJ0%UCxvlu(u&)}w__~iFNE>dr(5CbAK;dbUMAqu9$RtvpHZ3=m!a!P zqB+xKc_?2&IH_`nLaW^HBE21d>~dY$NVPidyYaMgE0*7whH13Cie5bn#9foCo19g7 z!_M3-a%GxwyKbZcpfaKHd^!|kT6li|ki?bsW)i;L2#YYOJz^;@&y0~o>DFCt(z;4|-UHsGN)U^d|LAe-43&quR(I*JyiqxgnSWMH-+qy~n6tQO=YmjxlU zD)hG?f1js+21nw!27jMV{^ToO(k=Z=lk@-Of9HP zbK4GNCfRnNa<$fFSKyi_Cc6R^Cov7hV^>Id=Wuz_Ix2VS! zen=wC&t3@CsE$keRt0Q-p{Egc#cVH?a>B1E*jWMFP`0y}icz|=+~KB57~(AHm9i^^ zFvcErPzVE;Ofl8L`1MDm4TWlVw%jVXs3>?IoQG)^WkssgTx|XEWICUHE!fZX51eYo zkyS;@U&pyAnKG;3CW%EZP@{$}yTMvlES8mx90~5UD8KSxFWFpwEKv8e=_r=w<4SyG z-%0Di<@&&F8JS!ksLf*Av0No-g-Ma+B|B38v@Ac9JM%x~XKO1z>#(#(B`uTI0~281inUFY)vT}1fl%gPFYkC8-6d&s6y82C6?qVf z9l9?#@#WaTSaoOt)kVy^aLyJ=v3vf5X1$bf)6vih^K zsKao8n2I^D4q9AS4yabFRLoIv`M8QXph7Vw4-fV7Ep;R7tod4nPzqT8m)3Nt@axht z^B6<8MU)wY&7#@IX>;KQZga;WLAO4r;}iZuU@F7t>H^@P+ZQ z9In2yJ(kPP3dh-LvUtV1mKVNEvh?OJSzOQL_Ij=K%k4un8WA26rA$g>6%NhC!{W-% z7Th334|#Xs9Oc@ymwq|tV?C5y+@Elf7t^7FDzcb{V(atDTm|JmROJ(O^eIXoXAkOW zgzZc{@dmGd_Ts2-_{>|i`{vF(TujAu=AkmFE<)tR63bxcj+A>^hk?v} z*Ob>1B3k|lJsh@y=(KG#hztdnoUeuJ%80c;4R$l{*0ks4rwS&G1wGn1;4J)s{b5mm zb;tFbXjS`-@stLPr6;#0q+o3jM1$B&)2`EtwQ z)quwnSsosaZ$`Czn>0tx&bru$c=f8-%k{!`V0j`4z6)&6V&dDSw?3vBSyg@GjEXM- zwe+GSzERG};6Z6;VkDrfrsRlkRh~Gu3*}tSg)ARZN2Wf_u-FM2@l!^4DuQSgc@8v* z98nzOf-p*SCZQ?cMoh$uW&R=s?pF-qmzR!46KD$0cBCIJ8#oMg(EDDE754N*Ebzg=O)M9DTi%iJ<>7?S5`zv;lZn{jUt~Ls>%07a(ZJ=#6Y){Z zg(e#M6prHIQArf_PqeilDi5Zav@r~bpTrcb_2NS$4n=HzvG7VJ;W)~eFnC`a^aI)Q z;?QKN_D_Bjf3KBJCcRGLS}eX6H4699>?lo>RDa`Lk{-^dBSnlQOJn0NQPwkFVO?sS zv>kQ^#ZIKp&UOe$-&96_J()_?43)*C2l|iJ`CjshRN!pihw}aVUxepsY_`2+jTzB;@VI23x-_JMQy;+}0dP6ix@kDKJ-i0%`OGcyQ zb2JQY9s}e1JkSQa>${r_c8QmhVjbkomUzS3VO`gMlhqRHwMgN&c}E%SuFoP2c3YYR6{carV6TJkPz;w|*gC`zDwpRF zLtejR09DI#jYYhq6k@3F%3LU{`oBX#G#%=-h+>=Pk*9E99zbR7Tw@VmPU@WGlKaes zZH=}8suSK7Mj;GE_t@(KfNF!qjAl@!%Q@&A4SOzZt-s$g8<~$y8F#hPnvnB+fD+y8J~r z1E}`d&H`Z85!o>RX+oJ@w7)}3zG&SmQGi75tt>{{2Ez( z@nf4`I}=iTt+Qrj0M%i0>Qt!8nrkdhE_`^yZk}RQ7?3Kq%R9f{cGJ&KzUBqn<&Q8Tr>>rTyjF8JVLWzs2JMCXnZIo^4+#3k9Q-hevzNnvZ@GYyA{?oni+fDvuEZY6+^p! zn0|}8SK2<<%a1$1Q(4P^x}gjkkjkEyM+Z44icy<(PGnlbo1HzdFY*AYlID`pmW5~y zIb~E7+@)w-V)R6a^=#>GTvMc^57ADFCdBXdtgO$b>_J7!ma{SonF1Ai_R{5zpOd|o z^~~(&q#J9p*Q%g-d1{M;u?S$8B&nBw;eD3}WY4RrnJS({V>0`kl*^>D?I4+q9)r6$ z&1Mw>f;5sH0k}AF_t>kSxn!*qlhfkr-EEfj9#rOBogMu?O+781=7iGC6lwr&oR z*@?!}*<&NWI~B+iwJP=!Wc({)ZT{)$DB&Z~8#UTH=F9LpYp zxiUWb_gswUY^wJXZ-~?t%FA@_=xjy8$kTy%QM~2WNKIv0Xm5&cFn>J#`{~)Qrv+vv zurzPfr)|8&Ff*xn-wwo!wqv;@7gGF?CZC(m8fs2``wmxIiylvg(H9|q9LJ}JNB_8f zcl_bv@;YB(r?Pwvw{?b`SNHY}cEOgRivrr~2#Ge)$(C`5*{0^xn^YH*s{ zax~6`m<*=567+uOja?xJjmIe4U9+dyuM}daLGT@nqA+d3MwA|_vi&oRhv6g(Covu5 zVKjtdmz6*$dM`8@#WwbNj_(4;D&e!oU%5KwmI!l_GXTo?XJ>H#ozpyW5 z>+Zf4Xz$`lV~b=WG^Q{x_&G^`RpZg2BEDd9g6tGH zWT;TLXLy%e+mMCJZd1!xYhx57L{h`oaT$iy+Gtc@$qOVGrZq-^5TCx<`*}6+=1xVG z{{!LpKNP}?jD}r{4%2t>Bpj_y-`;4t{F#PM(}eZ$El?sz2AYiyM*fs6UVPC`R}`+)D4xCd^j*(1dyMaLfdP z6zQpgxOyi3#{|S`3EQ|gs%V+HVD^HN$&NBliky+4I z)YejG)TLflpJ1gsem05ThFK&$8!k;@=di&X8N>g!Ot`l?1%f+{W<{VSx=bp@&VAE~ zim|iWbgN?QXz25Lvdx47Z zaAONBs(afIN<@v*Hpb4^)14ZJ=yRBcLIXyOY8)oXsaNA)I#uI#>Kvz}*4_<`xBrsr zC|$CDj1RHNEID)~za%A5yZP8}kI=-lPX)ds*qM7eJdB8yVHyfG0Gx*r)ylPp@h&FD zGHC!|ZXNk0Gai&xzs;*M)Ssi^5B+#wSo}PXvL9yh^S!HQcS&;fY+DHMO_&yc_)~~7 z(;Gj`)FZ!)jGPrm#rPTRdP!Vzt5L9~@KoJ@5d$IdN?H6^?M5IrB52qHTEeZJ5Xd>F z6(3|J7fF5BnI+OIL~jefUBXjZa{!Bhmj@nd0|6{M4G%>VK18Ewmzt1rKWH%HM%G%r zTVi~O%PoQEay;i?cSSmw49v&FbO7z#JDnUrJDpCq2N34BsXc%rY0kSlfOZa>^vkV( zIQXMhB5Y)6k^&2~D5{+g$BBCxUZA`r8q?v50NYt~oY=)B=JM?D>_@-Fuj-F3=7w4v zF8$%(76l#()$@${V*qp6)GCnqB#my9`$?Qd!{f;F0Q7_{{fGB_GV2-q6 z7a>G(otI<;C2|NMm4(Y7e`bV1RTb)vyiB*Ejj+5dKYjX$S2&r7x4J?{qSHrzY@YOh zM!@_uc?5XKCbUXhIROg&DyLFY^#b~$xK`}CEh-asN`=~!AV=`OJHXeXr&O!&-$V;$ zE#)dV&TSG{Ru1>F|AtE7{fiRtuD{-lA$W5+V5k?*pEFGi^5dTe`&sZg3c@tXIWC8Z zY$^5mK^(=Mo8(I%wUqeIc96_}Q}vhNHq4?-d@h(I;xEZ3Rq!@@2tI{r9IBFFrU^if z{c{0qmc>H>|1Ow4L_z871kzFK2k(+Jh`xm5=_uL`Vi^_4f~#kPt7n0Fn|n40!kb(1 zw^^RF-q02RXO_n%kf}bhatY;CX@38(I*)AyRD3&)?h>(8V#m~8s4bI!JuvghkNZr> zq1ey!;PN4=?0q2M2_#7tDH_#WR+8IWAw2O!ZIhhaG9sxa#^mWjv7_h4DrOJKd^8Mh zqFjt4@yEvsK6MFT!UqM4>T~0Xqmk5osh-z)BWf&gLYW%Zr{W=^2o=%Lb-ksdS6kC- z`II9ul1KsR|4<7L#rRNv3y<0Qq4rvFFYl-K*>xJt=IJCWZ9`KFq}Mnnrg#5CecNbi z>7wk=c0fpSXA?3s!ru^8f&&EW^TZ(z2WFv$I2!CittrKoSd+u0B(b)$J7DD))<#8F z&q5)-JT}43^#B*e&|XeTdZQyIUzkyX>x41z_|}f)3fq=KwUzLHY#yC`x!Wo_Yh5DGx!!0jZ$#6-*EO88jIUBh+^K6!r14(*}P z^${GR48s)N9c`2Y&nt>b+&o0Xmf{&!AA&2R5DK$04F%ttbsS@5;+81J%4gV$JE8C= z(@-18Rl~xK*6W^sYL_D}d#&zz%SY~@16RHGjTQF6v&D$5E66HmCZ<8CD7spk9KV^?#0wrPA0PWQ?&E%i} z2MX)9ZG*VrGXz9gNo|dTGoFuT@pKfKCndOvW}l;IvM9!6f<~`ZL^kp2s@O>Rr>m=( z+|WS&q3c~;b4v14W5{hgEhsJYuX!+WfCdwbB&!z&amIS1hXn$s$MaV>iOV-~h>ye* zIV>Vsqxj-~Q5cLb{qqk;?~eabH1BMni-*Y;JH@KHEHWYGjSp6l%7&3miNhO7&8z}d zoh+G_)He~+jr4NAK2ev3llGzvBW@_~W8x+DZD@`!6BMId2@YRGjuH~G7ZJm z1ZLTj)G4b18M+CrV~=c|erPM%x*5!v(u6}`8sPDN+tyuRa!j-EzJD3sbFGkXpc3~S zpg?6qqAOuEFwI=Ob9AN66F(T+wr$(C?TM{PCYt1i6B{?SHStX*wmtF0*2LE4o$v1c z&h8(5&*`d9S9e#{bIx<0>aKDZO^Bk%6+Wq}o6wqgSj*Uw1q-%P7QlRkiz6$fQFOa3 zK|DhlMq_)N!$EqM43bh#nG5dVIni`h@5>pc2TiDf@cq0x$(kF(1eP8 zw(of#E7sRniG+YC*u!MzBWifVf79#p)cS?sWH>1iI>Mwj%7>Cw|G3SoU=~b*Xji1nyDr_YLz*YpGDBF+*%O2qmSv&it zvZAPiHz)Og5nV^>in3_73S|Wg5CkZ&X<}v6(Hc7TGkgCh|VpvaYpnp-};Zw;0fkpdhmtWv3FFL?Wll``u?3H|h5Nwr5x`VJ5)N~u=3 z@nNVEUrSKj+}K*a_GLMRM0K38&)X#au~?D!&-K`T>x@jOr@P>StUuidU7ly%gBy^zdg_=k@kX!a=i?Lmh9$ z@iyse!Mm@TC`;xfC;jVFv3+hjxodOH22(1s?x%-k{!N39Q8O-OUyF?bcG~lGbIZOh z?o_Am0dTUqf(3n;J#>oo`=IGM2l_Y-XF?2vqDAZN*vhff;q_R`r0CKv zy@2QhC?Df+PC`<&pw34%1s<=xF2LLK%g6Hvv6><*oFjUG()a=x7{o3dn3^Ia6c!j9 z92^*gqY_Zvfs6)dI!BHK>FQGD)PA#{JhN zb3>vAnk7=A05@VH(1Cf@ig2Loa>~)5{|8I~+G3#Ega3cP6u{3eIxwd`2o(g+O?9L4 zkI~EHK?4*{ra}UeK_?)AghQ#8Q2sIgTQ^8BnX0Sc|KOZg;*o%)|NV#=210>ExT*UI z|6eeWjGGz-ICCe94ixldf(NOoQxDJm<9_Of0+=sCgZ94->QT{968vKnY(r52MW|>{ z!s|q6Ky@OtyPp4_0Z_oL)z8VC6Dg5Eznf^Css7KXjn#N!AX^X_RCv@1EhuV*?jh?R zbK60O0w}N+PYCMur2mcgkG5GBKpoy0NB`LvK%H@n0c-z*wwlub)&9gIfn4pG!v3f7 zpqc;C2>+7}6E5n@^x2p}qP{GWssBfQ<)2UaeW{&atIADVe?b28abB>=0DmMf)f=mZu4^!c}MZ6 z;gH;1AV_X*tipfHe_GAk`rMqWs`}^B@l26HmP_0s|69_3`UQ$EaU%h1|AYLq%JDfj z==hvxE#d#2Fm3yDK4<{%!T*%@Z@%}fc$9Fm1YQtX0-rhaKWNZ2KMkm=lP>`MU$^&j zAK_}#d_c8newP0zpicn(|3v)91G?^fF8M#N16^+N|6TqE*=`kZ{~zR^7yFJ1@caIg z_RkJmyYWPzTS>v3|2g_UClucM)RdXNI233_LlE=wANb#@JzB(I@R5oFH;4)+%EWQ_~Taa96)HC zmKOwi;#=~p_~s<3(#1k*V|?@l6}Q9yy0IYseCI0D%5xj|$Qe9#zj7A&wWAp~0PPl! zXu7Tr3l>q2cN|2Kp00-LBqq2W3x>}|MGxWM_8WhhV%j-TR>O=fpGgxFVD1sbHgMK_ z%kX84KavUAz%Q?3(9tLF*L{R~_BNGqjLx3%&Uf*~h0P-ChV)v|fEGvoD@Wz4#(uhu zVrpnD1#8tU_d+s>Zy3Zf@$upV7Osg`O(pu0k_9um1MB7xHxV5D>*6caP@igA@ zOcS$r``%i4mtfjCEG)JyRaI-12%i^zpxD|TQxp@}3COFbs4)3cG_K5<;zBRo$owxJ z{}%BoX-j&!o6VWb!V;+deC)qSQx;h?*IL8T6|r@f1df*MkV|Ss0YVFHn@7u=w3+^z zNx135riLi^#b~%FFZq^ymMF+FR?Rd<&O<*KhxPQkJ3e}_dESJrsAJ@j1^T4QoX0Sj z*s6~v7dMPd6g&~Qq3O<(cv`5Y=isrb%@G|mG-yO+IA-WG zgt4kilBQ)zvjzuk0sLj^ef*PtYTs0OOT20F6?vnX3BH=`?IKmCV>*;4VHMt~2V4I% zZ-(fW{gE?%YabKIQo1{V=q}#PEHlp`@M0hgkCJ5gjTSg!&Zyq#TpFx{h(?t`Gn^R_ zwv@+>;Z|-eEReER+UwN*ln{()U}YriBSE zydJC6AH-7*lEHF@;n6kT;q=J-v~Af$OE7|PU8Og%Z5p1tGgS&`PB&4VyA|S1KDGnA z8L$@Lu@~u~60q~umQJKR4+md1NLTc`e!Uv`Wy@H{1mJIA6E3pCO^mAFXsE(a$$Z^+ zFrSJ^cfai`U=zy?0i}mt#i2()Xa*JuMp>uRI7d%MI2%6d2jBB`gDb}N^ASS}#Pu+;oy+Cd-tEvJ}I9X|H#z$j;XdJ z?Ou@A0GRRu(4w@A={Pi$Y>iT0H5JJ**U0aY`xtw>RP~*lB5g?q^E^Xuq7GbW=Hr*j zzRCnLOwM4F==wXR}y6&&}uO)K#gvCxeCnzpy#4w#jB(B<204V)&5TOD(s`!UHEkhaXX zDOsxEB+2)3T$KzxZuT*|#>eAm;f5(+kVGy``85&U>Nf=#0ZOBN`QR59mA92EWoMis z5Aoxrrybvkz3D?m0W&*58nint>{2h-k$IpMU2g;hyd`1$ob^ug7wBP{Bk@DC2yocv z4S-mem6(5uwv^soTSoB}N25)rda{meZXm61w95Kma-Dy*#>*UyC%b2}VO zg8MZ;A2uJw98vaShdu{Fl39)~)Xn3D?(V5}c1|g&?KeG=2XPs_qY>@KQxL{i9+@bp zlp3_zB1Dx2huJy)eSBj=x1*E%6-NO<8UVL-G+v{$(ribAG>titwYmTuJ-=Cv7k7M; z@^#M-^#__#gD$@)5z6XOw16hs#I%NoMt?$wHYxERl3(RUf+Q{7MjcD)^s?DUA(jUS zR@-Ho=xeX;42;6@8pE9$k4C1)z+U%y5<{ev(h+vkCs+*0Un)le#xEHp3DQ!CQUD$8 zZjL`62&y;T_SoomX_yaKH&g>20@(9P<`o@j%DO*`I-ht~H8JS)|4_BQ|wzEFwd%UXw-XkzeJ#~Km3hxLQ zYxYI@QE0bl#D4R`AdH(TBX*0{sY2KtL0-9^~Cr?@%Mvarzs%k@vfo5 zZMx^{rZfH0^PV_(p-l&=(-qNFB~n^!mDsr@Mw%0ScntO_c&jY5SeGt)<67lC0v$?Z zbn#KJ`$Uii;$l8Uecprwy_NaZAT64@!H?ddsHS1Bd+T^^#(Snx+-{>km!Z^eG4hjK zfcw99Cf3y=#GQWY9A9b@I=umxpr0zv=Chs1v^mCj)U^F^AX_$($O*IHMCgX8z}P){ z25W@jSYJ4!=V=()!=i4M2dxS>?03>CY4N|I5QdE61gAOsfaa*4TR0T(5)T=^qE2KC z=}CPQ#)`XsY*@{<*fB*oCSulE%5WkLA6TRzXuP48(P6bFH6Oi2`!WD??_bRYSdxI8 z;Fp5l*#|y;YuMlg9-lmRz3s3|H0)%&`bqm^bB$U4>rFq8%khMiXdJ4@BxR^P^BQ8S zxZ0wGhD8dwG9`wHFOzJ7Ng9IkWdVIBdXcb-jG^ZAGK-?eo%0;F6@gR<>V1Ca)EPZQ zM>z`RIFR!{l@`*k`HcZ{mh7ad$BtZiEH-x7R>Y$w9?-pLSXk~ArFY0LV5QQ>d&I#q z!#a||Ux$7OTi)Rmo-9FgxtyRHFlCNDg(RJ?narEk?lo#lV7(8Y7%}ouA0*65SrMgC zfkU>@(#zG@KKlS%M#w0n*x}SAZ!_4@3SxtX;U>yUtZ#zV!l*(YQW zqu&QE0c^2rT(Cw$AQR!M8eUVK#W!|suCf>ugX2f6uo48#&%e04dj(B$JoUn%XCatc z7}3E&wqq*KaHD*tq00SAFDiCwLS_VhGa63QEBEZpT_QQ$haF=5 z5hGMKO&Nfi?}xjgwZiE7hs$x5XvQo$ zE2|`uXhBIDL6#A%)9nEI8jt201Hp6m1DkIWQi-!)+0-KTt;Nt2#%qOSoV1U$*0w1s zzuETXpVi*ZZk!!F;-KuW4b9zncF$~GJ~kp3YBWxN`AmZ%*BUHUwc_5e!|P#2@Z^|1=` zms+a&SKIO&=7!>!U~DbmBi>{FYc5`EbRds@<9i*zH8a9X z0uFYCtdxTe=Gg_E{f~5&4Gt1Mo!Sb-dP1d+%1~?#H3~|~B36v%Q;hNxTdtKNwN4OT z2N5PfMP|He){3z_)qp56u2zF6nlhxNn9N!(h@5dagr09=H994lD%z3XPZy`#DS)u^ zZFgK-+HE|y`QWU=*Ppcd+RIu3f3+d?7K)!vbrqq1iUkaoji?+ihbqK4#Ce+F6p8qz z64$;a1@=cmo?WEcS|sxEFJFq=7MlKVPegoxk-Z3NL)PU|%VSGA1m!Qpmqd{o+g1!; zHf2J?watoJjDnPy--+{J3oZO1=D~u_5m=Q`XJMOY>g(y%gCF`NhAfLt)_dy3wa#72 zrL@11Hd?a$wQ31}s8M6!`MeP_mWj;dx=hn-8S0{4k(FC$CM5e#UpPZZX5{&?c6?R_ z2>BgQb(I*RehAOZs>DR$ONjw*$Mqt48%$m4pYJa`B)lqM0577?8-6~cq=7U@)p|k_ zQQ;QT#%Y&N#NVJ|hK*OzPw6gxmkD8p z_a+zkmL$$5tCkd4_#Hr1*GLn;@%48zU=S^Y{zoSiv~I8#lbZYUJ7Nw&B1EAg8|2CnB)wRFlcy|{zpjcoZ5JXw8m zg$ExH!?ckzL7e?q-^004rFTc@J~P7Tb~)f|vhISAV=o}%?BR6s;uVDRuS=L`0rw0Y z8;+%fCf>^O*2WIhEz4$25IT6YR_OeT%sV4yq!LP%}S%JVH)J}O>^XteO+E;)h_U6e{QMvNtaiSafp6yMGVlX zMuy6-MIfPk2ggcNic2&V{(`%@0$^82q{b#+t~OAMQfKrj!D8hbm77wa#G<0exF>&n zFOgemi@zo3Sfp52pZ$zn;{&4%#vhQ**%;9l;aYh3p-;a$`svkJdwk$!dfN0|aB_VF zl4cT)l2(|LR2R^hR~yE=KL%lS6W_aM0H==fkQ752b0r4 zsDUKR2RjmCn`tJu$F9CjAq|@Hx;gO*yfCkC&FtnA?t}~|1C9HzUix|HY&>f9u$ck# zbCzNp)CqA579EJ^Ps7+k0To_LJsXkW!)RGuONJufACzOz^;pBC&kOIsG}?D+Mo~PN z7Wb>^kA%uAPH0|h9-&-b2IEL&A6R;q_x*z55x6|((XHb z(_0xuJ+f#04Gn3RyegwX$G@y5xM-QAA~Qr(jkBo0PN%!70Vod^RSNF{60f5%_OGRc zxZ_0ga43uhMX*+&0BYbiIO%w{*pb%S-`M`HU-(VEBM?jwKAr6oCP;Mp-|LLo)SX7! zOUg1&X!V2sasY}|qtx}zu}?H4(1{$aMrZnx!DH1GU7;gp_tDTzCXXaJji*pmR{>KZ zE>&zHQ7YIQ!rqKdi4vt4Dc3a8aWWPtVd72ADknz@3I;{4fJ?kB$H8~Af_SE?r8Q?n z7n(!ukjK5}r5f1p!8~q~9r-@wgoI%YEw*xDiB>uGI3w~}XWd^+*XH^&-E5BIeqsp{ zR{u&hFLNMhp>3B|rb~ed>uoRW(WJl?=GcW3YCU@b%kZT&Fx@;$Go1afEM0GR+A95} zR|h%y_Kg7y50JCqk>j?tJV_s3j#Xh<6Yoe!gq;&bqQ$I-i*Tah?T%O=a6Kunr;A1% z;v~znL_}@P7>&X(xcbY1O!5BM-|i)YMZd6UKQx4HsJKawh-=48&rNnk_4IblNk~NK zBaPoOjokr77-7vP$bij6`SYH2$bD|qSLtH$7by_r8$kQMGNZasA>h{UyN@)YW!Ij% ziOZJ#4TKd}*2ew))X(%i8lGKiH)B`^qnp{Q=L3~wM9aUNak*MWa!%LoZsLZKVTZ!s z(9VB)ulW_s$lO+1)_Wd6tw~4ds3Qcwg)x#3XP30lW6GR$%Duy{fNU%`W#k(I57p9( z0LbL-kASTD;`Fd3eT*Bn!M%hn`d?pvebwo&ba&)4@?cLEB0Y^A72 zB{)ZJz}A84oE4ZyA_U;-F8rNxIy;PL)D)a+${EihdlP-^K4H&QV{j9oAu7+*G>DYt zyR=`d!uI4n%jUv6Wq$ygPBQeYLLJPW46mAa+XM9fus|`f0x#fWDrPKOVbnxYPvBH@ zB!8ET-e5m+6R-jKd^|<_4?NYt5}C#iP3|qNc|HWVuX(R;SPZ&Ze?2v-JfmmDtcCV# z&Nfy)y#0Rb+beK$^;Vp7_`Bsp3D|hA?xG~`$8F8k{Q$S^p@q8az#)?&pAsDWu}3#n zUk50LgCM^g<535XELf=lj2>+H{3dK~tY(iQuNh~dBRr{_--`0mFO1KOO~xGc(CztJ!W-#_ZDyL5X>*CG9Tl|>ak{4DnrzH7;qP%Q|b*5 zaXJk2kH}FQcqhmex}zp2g@@6{3$HLqYIgwEl6n5ACmZI2&4*(bXOR^RawYAs%fHq| z&ALXLRi2)woTzC5OXWD0h!tWmk-fGdEDouhvgD3p+UDO!m*I-W`&VgxnB|kaD55B_ zdVp>aP=xV#7CydG;D>OltR6+Uk^LG_Q1!H5nQ`~&h7Vu6b;`S`Uys~mA|Pt~(NqRl zQW`gaUD`#EaT9oJ?lf?aWcU#vYA1dhRRv;uw&!`X8h<99{ei?fcBD3=$FUgVilpff zjU93+z>?xt<&}8S8Zb*(Rh#jiyTI2iijQsXAndTx)nmHmlz!TR(bCu0>7OT|DD$4 ztVY)R2__W7MaE^?7k>Y%{3yzYAzv;Fca`3$9|RMu0Dg!1Xx;j4p;Xc@C_#_9o9@Sr zG{+VTk7YsJ_r^g1aQZd06Rz+3MxzXr2Ke%b>Na|Y;v(?(Lmxk-J?;V2g*o+r@5Z|) zEuAH+x!bhMifks*`#DS-aM4tph{}GIvBwfr_i17w0z)T7)qN*AdZ#Kgf*I?W6Y=va zIlp4g<2M0%}O-U6{g8_*VZW zH=mZHzuWKjJj1WzwfmRRI6pcAnC?t4d=oZn`yHy#9!iD|8%R zfl<2PcEfVsymEv7{ob|b#}2^3ozFbqabVM3d)Xvvc;vGR?ariaGIw!SSi5V}+YAV$ zR|aB>?Npzm><>26M=dOn4%^Q69vuns--8WBd^%7)pPAUCBM)9t?3f$i7KzQk zJ4u~FtbBoU5y521eHZb&^o&2HRTtl4s|_cg@4-s}oxvyGOF`{AgUIa2%Z%yjOU7OD zX#zV6Y)2zO#JZD1R5e_HuYr6Xyiw_>R*B1oHsSEg(?s*2Fpy=&QxWu6;LvMrm zs?*qPamF{Sk2*J=WDGzCUCG6IDk5CB^(eE3Woo=ew=eKj?wZ4c8*K+aU5vi&SaD|r z5Dl(w4LTO0o+3GPZV*Fwi&hM78J2acGw>mlVha{H=;m}X4wHKV;w+)$?Jz>VXvrV0 z9!#?7L4`>hIt8Juf4}W%ngX`V*0I(e5CfgC{b{!c%vqLWWPMf&n-=i3rB3_ySHEe` z#Ro?UXjJqSnLVaDt}7phG6aRzbrgEi&~}DEF)#{qO$wWqYFR81GO7DZatj>?9fa@- z4(oavsq)p@eSF?IvsZp*Q8WHMC(+;WGBc4?`E;t+N^ ziz}?x|C|1T`qmryxH9fLah3sdg<63Bo^XqQ``c59WBb;_Dao#<_yNi_yYptpx`2Bt zG-cM%@#EPaw*m;Y9~9X21Ojx@^kx2uB1?7>)Rq=vmP;>;fYcoi=a89c?!Ro@l=~uy=niY{!;%T-@(@aramT7RdW>5pev-FtB=?F0NSF?ll56 zT8G`if|d&3L&ZTNk7N&9`>Tw+n30%Kaq5SqLI${Z&O@RW3el5yRcBM-6e@J*L-ci5 z4EuKpb>hDj08I(a$1hgkm<=rqAq{YGP6aiXtS|`XcR7?rn|Y%a&FNkR(6aj2#@+E@ zfm{ml1MySa>WML{v6S$0`~I4wq$Zf_^9*qkiN}{m)cmnMN3z!U@}345k(QQ&J8Dww zL^8lt?T4_kC*E!q#b02xRK4OlmVVNUc%`bY9s3d$0L}yVy=Km)okoU7Elc+RS1bFE z_pCUWEj^Gj?IPcMkP3maf~jMoHkpgQG^og1AkM&N9d&PAY=E@sr}5h9aqT6rCc{^f|^c6Xe|BvT9Jp;lhPj| z8sez>vpk3y!7f1*)%rTPv!LhS!-$=;V*5-jGLXGL2{F|ejT^o z?;F{wC`6_A{BZle;;rS6x&V<}Ubg zJ65{f*1mSl#`}F0I1}`HsCP2N(U(T&r5*E+NBVLq6bEqe{xv!-x?BCFVm9E1f!)H_ z0Dwv7C>_kj^l7bB`zQolU+7^WPoJ~e&F(|e)!{ zpAkc1per;u5->_b6bV3GU#V9#AEBlDpuoW%i3FyvWLbD47Nu!y?caXC`F9ck(!C*j zp?jk`{fq7ch6Y9fCaWOa%_U5Y0ESMIiym-4z4`HOyJJ-(TNb~On50NX4SK0hf5$zls=H>A5SY7wq+h3vkK?(o>xR4qUNdtDTHwaJEh-0?=)csbcmwPDvK3bGYT=TZkSj=j(e3wfCShc4l2%6QC8N(Huln$? z?Iru9Tt*uIpb1z>3+TFd3ZR(3rHOM{E9gkx-hTJb{)5u@D6;-B*naa~;&pju{xNhD z-jKY3>=kSJ?H;(He(~6_mb>~Iz_ar3tdAyZcdi&7c^KYs!-nDobS?9n5jk3MJDeHF zx#tqZsf8LR0{Ml1VK!H)(tYV&CLHtlFb2$INc9h9c~We*)=%cPlKx6- zC4jC7{Af1FO{cnYX~>Hd&)zEG;}dGd(zUUxT6jtzB_g_a!FV>j&JG^Ni9z3aZRE`j z)!3sK$BEd98j+Imr*F_hvZ87DOi7Vw-G-W{lqlIb+y~6S4XwZ% zj>MW%3;|pQg*&M7k_kueqE(QLx&~Xu57wkyYVO>*NDHN}$cKk-{q6M~)<_#>M;`Kl zi|)svK$q?3i}*ni3%k+@9I22z1>c-sW6Fhd;eZe63NKVTyX|C4>3Z}al-0F)V|r^s z9ELaPF~#>wQWH*K+65Vo--|8b!#OdRdWW#+L%$(Yj0RM)I^H_4*S1 zxKb;&82yq6OhqM1Pl7Dl`YdNkrQu2$#GR;=Qiu*bbj^JeN;%GLg*C=F#QzSJfx9`n zM*@u378L~42;7~ZNp0Yv9D2GL{0tiQN2S9B?=(*MJ3VICvFee%KcT!4lBb4Jp__`W zra-qRgLFYPh%6_K_h+t?ATS4=_Jk6W&-_Z5WgcBgx4%4FxBf_WnNzK56qZIwSd@A& zP~L!{XNvlqaH{`>(~3Wmw8sO(1%q$Ybsdn(OP>w6ACtQ#nc+}qKM#mXQ(v5#;W)8f zqmP)CSvCHq@+aNQg2a~DSnikD`bQ+t(!d_kijcu)DKeS-&jT4k1DHu`GMNC(4*Are ze|C76?=M%a%a`OWn(!(W2uPDmoAs9!ms&jTm#O!MecoU!TN^h+e{vWQvgPx#L{Df^QSHm^IH^lidhje0x+Shu$V||~@oud-o-mpU)s<#;!!)w%H zJ-;~1vAp%bZ@xf|$9PU){kro_Ih^1mj<4(2M$H5-NLEzNX40FJ@S}on`2K9<4P=P> z6_1w@%kq&T8FW&2J3r+wh7Cl}6D0{++%&3R1zc>IT|e~~rK;26Za7kjtb1Fe5bI1zaJYYlgtVh*NnDD--ow2KBff3nWY z6P5HTqXqNQY8F#VaYufM)si*f5F+i)iEKHrG@qu!oUB9}-1*6Y;c^pbmp2(XkgHCW z`Ov1sfYUvjV0Ok$i{~fPYkM%mv7+}1lcmHFH7xBhsW5W=nbTmj{~&a)KwVA*cx;8W zDVn~&$C;)tij6dI#T+pzF0(xu^-CB?t}jYvD9ojx!?~o^&~@p4b=VV<^FeL1>iBi% zZidceGRv68#6P3-kq|j@ssCW$v_QQhlfOx+1E;(G#Z4ckCk$5R=~qOZ{*!?So5+*z z@9giw4OeyN$ZDWw-jqsQV79&}9iT}@#WI6Hu4=QRf74Npn1~xUSjeP^%p$`e{Y{zW z%l8f$?#+(0bids1t2@gy?xVL8nV1Q~JP_`RQODlMk#-tt`-}y}dyOs6>_640X3NH4 zaBR%~ph$hixc82wY7*POj`qS0Qb)f?y3Ao-t3#-qzg0jRxz=<_gt zwO0j6jrU^ymut&;q_}P>2{oSpk8Cse8wuA=#b#-D?krKDL>^C3tl+qu3 zobyvLb1vYGh|uoTno5wI>SkC`(e&x_gogrjq56wT>N;9_3sFB``3eCctB9mpZ$?xN zW=u=5SZ%2tU|EW~$jKj8z&-;}On~Tq5Nr3s*yZoB6eH|`MH)rx(DXoazy0-`D9K!H zCkP+Mcpu6ayPLucXmpLMi(eSJ6GAK0OX~$K&XnzuofFa-ikr=Ah0rn-1T$K-k}hS1 z>n2}N_-8Fxez0SN4*w$d@j92skjhxLp)TUr95p&KpQ2-K*LK!_kIf!-egSN`yNzV{lHB9iL zq|6D&x(@x4kv{8V9GCc|l&xmnt3Hg3jmU`afa=d)z`Jf}t}xgPwiFQRH2ePmFU>tZ z6RSD5w#c&~)zzvnM-huH(|nfWd>rs_;EB3wV_zi~o$zwVj2_Wn=$ff%OTou4d9pMO$ZCRVA#i1u4Ba1b?g}_AOgm??qO4?l^h^C(V@@`|4Y6Msnz2N?oV>gU` z;;RmSdF>&j+2C9M$+^|$TOUH28~rBC9|+W|QTj?h{*BKHOUwG$O}f)9?<592lQYkN znH}k`B~?e(qYA>44~DOJaUW%o8Q+{!fr#-eg_=80hO71j7cN6%rS4Otw;N?WYLf5e zdnW8MpFeGKyVwRLgTx!%9VdzC16-)`-2sqLghl-sRd0+&zbHn%ACfQeA zg%2(lbT14kuPXraWj?6_YjA7~HPc~8yMhR(BL+%3P{`Hkh_Q-W0{VM$IH=j7kWDHO z+|AvPhRB)Z=v+L;|B+4+W@~9luMLl2@SK4A5Goxp35U4mflOo5I8f}Z^~Rs1X*~8K z7ejBP9WelMz-Xu`rU&;^3^R)>G1(?y5p7U#Rq`XxUK<&gI7mD98*&l7$PmB zd*es(r%wLPdSf3Woye88n|{F~kh09!#~S3Yp~f($c^6N=v#Ed@LE8r_FQhY<^sC(? zqQ&+pkOQ)b(1dq|CLjjBWTtK@t-d%^mDo22=vcp`Gz-*ZPc91SmiJYnMBC99O_-js z2K@S+CU;D4|C0{dl$M!@gwR^u69+u~)@qMhygF5+OG-~zJo8{xh(YR*TaGb9ezx=A z7s&LNqr)4X%oSPMAV(Z2soO9|mv_z5gvOyqK8*aT*jO^Z=y%vIfzn-kY@OzVvM8ss zzgMjVS=iof%=>%(kM4omL}p24JM$}9(W)abtQbokoUkUQCROe7z*#~?iGsdj^sdWl zV5+GoHRkg}lED?i{pGM?@PI;XstTsy18~w*ln~qtcx)<44~R~RADcIPqpEV5nN|iQ z`g-3?*OFBkl~bBbzs!1`?;ht{Hzzu#3_Q6?acM)*lK7)Ge<{~2R81F=MKJw~rK#yn zaT#sy`i)&&JHT^$ls=^+AX^o!L5a3e!8v8d%H%Gq-Ou|em~CPniLOFr6NM%alJ(Dm z2bOyb7n>&CEWn7rHK*UU=)11%z;)j#Wir9t);74G(x#DXE3wE*`5(sMU`?>DRjU5R z+MXqZ9#K9U%fLHbL{HF8%>l+i{5i(KriE7iXTGhu$&z8xwMQui0OSs6fuR?baTMl5 zj4hCA7T6$n-yQEIk*3twR$-|r7%<4!VA zKZ(&)W39?nO7ZD#8@EaKw{uL+gpclq9mk1cA^ zA-5kqWPtmd=tefF#WJ&%^0|t+%ktUai=cN@jwp%>wI1XX^E%2coKEnD(wd|$-qEoW zH*EVWtuOo$J7*?^qXk6_O_LnYg`o23e&hV-v;beP-r`A8UftWvWgW#YbRe3tYpok( z@H4<`OqnIvgRD7Jhh&hZ_F7Fw${fFj<}QhNLM5#+ z0=qX%C4&oTa_f?<(X*Ln6hEYQ6hw~typ5G#Uz359&CLO|?>S|Y1&VoTMuR9&-&~Xi z+yNM9E=o&;T#1(Vy^N!YebHl{)y-+BL@%D~;qU+s&!*N{ysB zW72Fko7O}}ZTI8utKfQ^AX>3gJ3S* zh%bi~w?kXVr5(yKlk~xVgRt%OKF?&0&ZlJ-V!=R0Zi?IN7!Y&$<7{}#M~NqTNQH>^ zd}AaV@`v{l2>^2uXoH?MJDhIcff;{xZ_p8boO4qvVcrNeN$K=^l6V;%43<+zQ-2mw zL&r6M2oTTnqq)8R3kZr`REM=7Re`yfcR`bS?U8Z9@?^Yu5(#E*+zPe`=yxz)cG5`y4n1JTf^Pcr10awrb4Id!RN*W;NuWU2 zs!*Fn8`a}58bPc;r;M?Js(~+ZHfzRnhx5m|S|_ZVEi3bYHw@Eu2mH+BhKo5j&J^pH z3Uv^$^?RIBox1M&lvWMR5XR-9P+z2b0|E^e%DHf^pl8aM@eJqiVFfo^HpaD+*SQTn z$*q|~%S*#-EIrlE!|$9*ki*T6 zzgd5kVFmtd2G`mykg&ZNuplx&(&Y!*J!oS)XwSa7$51LLYr|=wT52u$pElz) zBq)G{G+()&n`mMGh&X{p=_z$)5W}dovSYFD<999GkC3m}gNv_?rTx z>;fH-x?O>Vl(kv$J^*3iq3R)!v;H*j;CVHu?Fleq-n>?`H00R%75_sV%@;1Nw6cxX ztI?05xxY7)kT22NsvuC-yA&BV=I!uhBNz}ch&+rt9MYR-8zyXSJiOCUMO!h z^}fn8{h-NfGM&&+K%D27dsq@JN;Q%RDRHB&@VA;7!B#%2-DVT~#%QCZnzl3jC954J zLuG)cPLzfzN)WCB^*~4*)NK6KT}HLNKEwqzgUlgzGiUz7hIFs#SAA^_?CvHg$zk;9 zi2`Lm`|w9}Z~T;~DR+5C-Q=!k;Fn~D2kaoEN^V8!Z(re;zg*W<85_e}L#-m@!HB~Z z%0A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↰tror@9wX? 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 z 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⁣mr!|m*%Gv-# zh+xqvU)k79ln7=6UN(cTK1uMbK4SErd^H4wjN@q*F` z>sAAvf1*GoCeF?R(-|5{C`%sMZ{v%E(7s~<64hU` z4$t{!-@ijd$~uGEYv=QcAftTuN7`uOPaNxrg@M%SQ<($Fp+yZ)V>v!G_%^m*AA1QY zm8`_BE}lo@keYyioYW|YrwU+CYTE}{FmvvQ_RC&1vzA}gY^gYlBC==K%mYSH-1*c7E!t&^V0YIJ*i+hAhloq$aG6NcK{R$6dw$vN%TFw zpwl%K(Hpd$G=Sg_uAL^iqyEkC%-jb5?JVa{>Wn)DQsR4m<33Z)pqka&m%kBm4A5q+Km#c ziTS$Xv0H)}^0HztMNjJ)KRzOOKIT~d(K$pq%P`XHG_d$yOs6*wBTyZ_^HcZT)j^5U zWb@P2o>$4jt1Lp9V>{cUXD8|TXlvL@x%MXTfss;=GKVdrQky&Nj$_R7!j#-Ol)dGHC>*@B=)K9ZAqrM~tE4;^5bsqAp4ZDLp# z?qI*kX=WhVP;@YTB9XqED9?f_U@dN|PK59qvYwJ^OJi*cHZ+pNFZGML(D^QarkFK{ zS_?HPKVny;h&IcQjWZpJP>a2{??gW}4z;QzfDSb0k^5b(ZG+zi< zq8Ah5(>*m+aFSqV6J*;tYxdKdDm5XOfkng-NyMJ%kloTkfDwU@+HE1YXe(`3XTwKT zO$0*t+Qo;ULX;O{O!H@0!HY%6xW0tZf=)YV+P`k^i2a0iG?a$Xs0XWv)yd7%20N~Z z`$D`dRtl?m%%rfZe_NmV8O0BiHDx?LHnqeo_rZs)Kdpyt&%5#AW5HX=NnCj5g$b!{ zQqKVY>_Oa|mMPcrBVeHT)IA3#+qCdRH0!$l$n>Ad^yKTcRlIwJcY6UZoeLyEmdvaI zzE^%Q^?f&$(uelRZLx$mE5Tl)!ROma?=|q;KiyVVryI%p?%;K2*+K{uO8$b(Zm?+C z2__=O=&@m~_z>T`O(2}T&UF^Hfcc)qt2CDd_q!*wuz}Z@2+#Y;?$_4pIAc1801ziQLy>fzSBG&x6ShYZiDSjNq1!#+$oKKUOPtl>1?2J zP{Dy20){cj0Q2oZvNJXAto!yrZDWn0zMh}#<)6apI75wbZJ)P%{*Gj%Fo}@F&q}dj zL2TKZ%FAfVPN+xcRDn&Nw`=MbO}kGPt?=9^54UkF8lgj2v~SQf2nHNfP*7NT{F4K+ z9Y($^6s~q{R}H>*^@w5r3BI>~rUA#tR!vRquvVT~WE;}WS6?D4IzydqbQXV`(PrnC{X*clJ=PK>-RMD+9`?w5@8gh@ z;iztcPy7NZuMDiQbh;{WDqpsff*1p~+L_oh{H*utKFa2aa?VRe-45fMlK^PR*Z-D3 zCNg;6?j}|p?n_aorGipA)@WqUfz+*ArF!qy+Eh3E4%ie#0pK$V;Yo&?)+An#> z&e3hQ?HTmxcI9uY46M^@YOYy{k_1(+T3i2a(z)D_s+}a|Y^&K#iD8o&DOB zw_qxm{7+dql^URO`o)4*!4TQHeJ^ki;|fC~9T7jj!yO)Zz8Q%&?FFjvcE961rRLnm zfu?aopc0h#a9kUJ;GP3(hWR^LKc+0D`t@<kxnLJUq}da}Hl*a-`PW%*z`9RCn z%u4vx2dR5y)lP8IAha72q{Xr+ImXTa<=+U3B`&^f2J%1#BaQX_t(;CbU6W4}-?k5m z!FW`ElE&D8O1m=wdL$Y3pl*D25hJL|pF)LeCZV=dp7{NWKynT7pUnetMlSgfn9xFJ zC#(+b*Vx@b?t(cFn&n6*XmHUE z4()PvOW}YMw5G3~BFIDk)g_7iQObq3GqgebrFxoG!hD6tyl10w+`fXBP@ky}e#&O| z2u`S+tpgT=-P1^j?m=qvyRt>@p(QQ++5U@eGt^!rLq)5|%ie1t&6?864BQ%_UE=E; zL!?AaGUObVY5C+Gi^gznCi zGKQisCi?Nd3|;A;N`FFsoa#o>MNaVH;c)&4!xgjEwR6lvH8d>| zbuqD82Qn!`T4Q2Hf=!i*_SX;db>I}UE>2Cwy5O=;*T+$By8;P-@(S<3qQ0N$GgnrwGk zzC3237#P?LiLl1-g@n(Ghhq+iL<28CT~RQ>Z=WkU4Z?|uhVxR0wW{TV*LNhLv51pM zkQqXm{yQY$En)fMv>4G(q}7Mtj)-yj)mB6iH}B=SYs)`Jyb<45&IVqGszGUDIHNQ! zb&5*Cv&+^%d{3=Axa6B#(-rHiJT^8`pvfJR2JE>d3to?VsPx{z8;mGNIMN1{}<28vpc)9bLQ;KSJ&qvEl?&8 z=}k&xUYO%mOTolm(XiaX&fsEEWD*wd!x_?mT5ttzP#D?j)^r&~>Of-{jfSV@Fq+LK>k;_0WgzPZ;iQwMl z=X^vMSm+qDHKhwKqzFTYc9MW)w@#iA)`4p1lpe87?l}2uz@lJ{24B+`%x3e775NxI*J_J^BkQ%VO=&>JGAgs zSI!`86nXQ)b+b%r`)f{(R482r;r*tBD=w*c&1Xhps}!G)zQ0B6!=SD_vxJXH%o1U*kK&u@2UA*gdyMHmmONL$PlO7)j1O zu%Fo8zBB$E3~qAyvus1hxn#O1jhZknzEIKBjOlF5*o4E1gk6GupyNB(N0Jt^S!T9P zcG#S$d(7bW;zp;Dq4f8Xjm--|pjM}hY&Z7n6>~+ow@)y!Hbse)Z@#FR4NDsjd5T>s z8sGeMzY=cQMiY(S&EGemV0S9N>8K4QMQY*&nDn&}$38S))aB`MQp4H>As|HQBn6>Z zC>UWgeep`N^?kTG`8zo=A~FbNDyJ74u!Hicn5*IP)!L7oITDPO+SF6T^&_K2_vNM>EG7e(ByMjSliCm`E$o= z3_n)rR-0P*=PK$H-0GlMxwT-9S#y~hTw!5|KF3v*Q#q^b&_4P+jiF{vmn{%D@GDwN z?OZS?-DGZw3|)?Y4=yYMY~dNKp?G=HkgOIM)P>%txwYS;ZmTkX+XyLK(B`@0m3h;F z4Oa0i|4+F(cHH8M>_Xw2B-3zH~b&l1^5r{Le2~eO*0s6)<`(> zyIu6DQA&P$kVJ`i5X^3ENrw8KGqK=@{hEsjE48oUmUNpX?TOlI0%J{9~%HStq(+Gt!R}ai~r#dnhD2*YS-Q z9KT@Lx_ygzfIIXH&Jx)?$qmJ~4MW9;uPQ(~K@jnKh3wydDYa@nlWK^qj4ntQEO`&J z0UfcGwC4CIJyy&-X1(<=u{?w*3(&-WtcwJXvD?Zlt90YkhQPW1PTrN6IlW1yRos)E zXp!l$Nw%u*Kcb_-Du;QAEX!kTIAi5(bl{N^V4n^+kFNWTCp}X>x6f~&0es({bbfYo2p|xvAiz3Fs>r1YM24y);%R>MaL_B7Sg1ma(ng9*P8b^lIDZpspPI2x z=q_H@6Cpa$2=d%iT^cZ&w}7zyZgv)`2pCryamCCGf%nCAeSeAg=L?RVyVgdNxQ0{ai#k(v&vPA8MS zcWRH>x^|5MczK5^9vuhwTt^B>jdfR4fn3qj^4r6Oby~c^tjA1AuF`)}M=NbTgik^& zLMRgw3b>+l=Nx21IDgI1uB(3D2AJ!a{<)0)3`_bsKsh$OC~;RV={GGI7v0BJ29F5H zO;oG1gRfWgvHaYKjpfUuidn0pKy-lq4Hc2~Ao6*`UNz$G0-JjrmsPJ+Mri-%!&uBs ze3249zlfqgPi>g=i6hee!28d{WEX->`lxgsiWmwlPbslY+{S@%H@mBO!@nv5@D~_d z*s>1}0IQ(sOt*GEvaa){;l0gZy)sxfCoRZ~7SeD?z{mrJ ztPu!)had;W_ZTmV#TTi)Ygedci8kvvj*RfmCvD9$3y>B!_%xY4;2wEv!6x`&Wda=h%3|u-+0uY_Jz$Iwd=#l@mJ)}P%YMn}4n}-PI7fV9-1AK6xhVKVhh+yvPk;p5 z(1=bI6`nu)dY!H->Yq7Z{+Rah2LybMqPQJg*9od=p(HF^x9*2?P7G-jE@dX=U+6vR z^qW?+Q}H?0X6ttgU(@LOc36P?7QKp~KMJnxLS{hP^C|9`sH|X!Sht!BlKaiVm>F;A z6G^>cS^*L1bIxQm6O?m?zGDEC67$piq-_+@;2@;mMUC-;Ap`W+H|T{_B;%~n-bdX`?CW$eqNqoFU1a) z8DSUW+_}8f&TFSh>}4jCvCjI_`aIWsA>6eo+T4-oAXGgnQ%WHvO>{&;-R;^~je2#9hOehcA1{3d4iemqvr zo5_t>P`)I*>4M1ahNAtxNI9?5p?{h9a;_7y#rq4>RhWoDhi)9u@5mznk9*;=M=$RV z)Q4L%@I3r=jbXg?yCIPL+eSk+bx-n)M`3^Wb+Wslj%%ZD4<`7p%U>;5{`Ma({LoFE zbzLN4U#I7v(-=z)jyC92H-33H-TM~kyY$!dx&_%@afVfk(xrWe3+EdLyiHNLC%dA# z7h!&zObr-jW4(YT^RuPCgws*_{d{{1ER6Rh)pa7NAu47xTLsOwLusNpFUwltq1i^9 zo2Z$QkdSa$M@gD$w51p0KEZoV*PD)wg451FQtUa?2z_{+2IyD1-2# zrvF0WwM1G^?&CvWdMwbUFLXsN?+An>R&;o@YLBdNm zzYd$l03`+Jy3?vRF^w>GF=GwBV>H%>r;Tn6<;eJSH7sG7lW@;|Zkp_*ca3}y$qw#& zm#LENaGSb_nD}}>s7aV%i47^GacDzAjcg>Y|48I1(m+RUr`jf=bQ7wlC1ndyE)Je= z6$=p}7JiF?H=&=_kd~Y<%(WzT9Ur12V-H!V3|)ZLmI5dEx$V_BZEzjdr0?bC4`Ktb9?8^2*fFiN7htsB~t>_!pJg4^MuW zE=%-o3jLkif<6{k=Qy<1G8UHzpX-!e`B`L+A_yZLFRY7-`;_NFIvlLq>WP6e-E4rq z|9`F6#qwzm7{!6EunWE+YtDKQAvw5FFli-tmZnoT#EGd*DPqP9dM5Au-W?_Y*@yN2MZnHICB;EdSVt! z_Q3|@P0cJDJ}LtfdaQ`SW(GuDPq?6a37-7gExJaD)FTBwGT-{Wsr~>zaS6*eDA`s` zNIMl73Cv7w`+m*^DUd(jo$Z_)ZCnq`@Ra@Xhhhs_3|SfCu=msFZa-h7C1STE6}3lTf6pOtAX}|GV|{vu6t-{F#&VPc0}*AH>@za4`h& zih&E8XKI3v@DXn9!7vXPq10B?LzgXFtpva$YP|{^ObutaxjC#Zzdw|5+4AzDHn_Ua zGH&XxR~MhO$GPJjon~q>+&c#TxjPsh5 zfDUKTE@MA4d#gJCwb#&|c(Loz+6-l^d6-H{#!K1j===L!Tk(4~cE@V%y>;cPO1 zB1gYLh-_b`G+kqtaXT*BzdE~n+nMXRJ|1{Z_~h`$G(RbkD!Kd8Sl&X^{`epE=T&hp{Kk*#5e zbdLX3=d|u*Svds+_<(%FH2tB3ux6-y151Y>t6%wGCD@-CEyJHv%QF^&0gB){-+u}F zk6`aglFeb!SoW>`1SMO5OLot`EPAalZ%8lwX3l%-KOppOm8Of-E~o)cKQCe?5LQvY z6En^dDBNj!hjox_!^-zsSkJZaP%_lI_#WBeB;VzG zbu(RM#BVd_3B3Rzn3={b9w6!_ne;SoF>_m36Ch_R?ERcF?BpfAnJJNgVA~ouu5;-H zP8f=&1x~DJ5BjaPb33ze4Y8*qb%dSljkAZtw0RzgB6;S~Etww69Mkc}$?FXoWX*`o zvoc!`M@1+*UZtr17#6sSqqtKxa-!KZksxw>Nn0dc7w%e)_Y7l6NA6~`SlGtDRydfw%VpR>8f!&%yFiDXvIVy?XWmH#4Fzmlz{P|x z5wTyna&CVUx2iU@yI)j0c5C78gWe{{Tk~^hkLg2WCATu6g$=Bk&>(uerE<2B(^bK# zqrLszM;i4~u}c`=eusN_D3x%)o8fSF_Pj!VzRIz%xq%>znGnu#** z2;wU5K!g`|fS+cK=q$ybk0P_{ORx_e9Q!wZi3#eAhHVk_-!KG{S4vkj+2whTzh|x( z!Ad5flIM`gv>#z7mbOvHdQ>V?@3$t=>8)d?-8;eVrvwQY^GxPKGg^ zZnFiNBH^l{s5}OiJ8;i%+n<2&`Rnrr5~fTXp@-c^#&d+OjLJ61qP#XvG9%ZdTQwGh z@Q?lfJ_S5(@8}wN@~3OP5T2N}4pIYDk=L#^LT`U{#pRB2sG=sawP%#a0LxNuKs8-H z8?nyT<_2b5mwk5n6OjucYL)kTF)qlY=|0@C$H<3P=53FxOIM1ztHL67{>Lgi_8puW zv8~#O-8?xL(4TFanvlfPh+vP(c!$M5rzEA>eRlK%6Aj9Zt}$qwS4r~6pLw9`T37V; zcLN^-tYKpiJF<|PK)+_8eu=S({V%!h^>-h{UqJWFputjwI1EN$` z4>J2**UX@*YVBLw-#?9z-8F7N3kvU3j%YeYULy{liBR3#_+!pC@ciARqf`?tcE4|8 z7{oRwa`+K0yF$LwJ#T~#l$#ClWjA7V~rfhuIY?tvAlBP4jJ|rlz zT@DOe70RnVZ|>zp8RCF8xg-G;M)l}~@-bRjuc|3uHQC2cBlB-gLABvd2{r!4N5|bf zeWBS=zf_Mt4RPtdVDgYsd?2<=^v#>WODWpb(O2Wp&_pf9SbQX#?2U*-ut6e z)S(OLJCdL7ExS;k zzaFbZ?6yGl=NZ5u@p8i|<55dTPWe5z?nBpW$eGsv4UCElbETsZ7q~8Hzx^B6u{ZMf zXr(z>(BbXC6#Ggcrp(i77ZuldvoWLOAksUQ)H~mo|9O`*)TfnY**f0K8xEf1SZ0I7 zqGjZyST;0}Z9TBB`{1v)2PNgj#KGKcog3N;FD+#A3O=wPz$A^)Zb$!oJaI*zs$(Z< ziy(6dB4K3(x|9#G^;XsvbGk&v<+)vnPk1@dGi7c0xogIRU`E0v+1{|{&^y^kSy=z9 zwbG&gK62S3WM@kHQXP-o%y`pfDSADvqT4v#hU`#_uBCNJ>eXBgzM&7x4LjKEzO*eR zhmwn$GYu$Mj7~Pvc7N1&6%-$u9S`s>w z4dEY7IYo%uXHDI3Rp%FY75WYp7ZntcK)2E?z<=X=1ugnhyJ~eH^zdcqFf^#h9D;%>m@u*F+3y=17u2w!2*uTWn z04xd-#!Ky1#KJV#N0iQ9Yf*n)rQH}u#!W~POs&G;%z9Uq0w<6`v@&am7l)GcI(_Wc7CZzzuWC$TMbJYzBZ(^ z2i>L5<>a@5U_US+fN<%_mxOmH+KHcYq|<5$6tX7va5Nbg6padY>ewl(0a+)V&B${ z!RUf-YiF?&({f;9J|Fg^CiZxsxw-XxV8{z<7nTE={2rqP-BQ< z{ZJ;iU|?LOPI>^wgJE|T;1ri^!rDh2NJ>x-wL~STl{Ch@&?v1#=QCssEqVz|(hFJT zH)WG3O!=Vm!KfdOL%$H}5bH-YB*3PSkvi`igc#O@PHmJKmHPQjqO1`1w$chO5)e8RYrnpiIEAyQU{->cL&ETpvnUvreMZTjw2$p2;K;VSjZ zV8lB0Vu1Q6EN|*RESIYV%qSpf!LC*bk&ZVT)8S zun=TaY7vJmVS^ilYLtcR`(_Le=%2Tiyk+=d`Wb07WM0Q%dfS4Q(i*it#MjTrdSVF5 z*y4k023SBmQ;!fchc#_qeb9X=WrYTpC-J;dzK(u-VZT8OI5`)kJVNlc{#agt8r64f z)xS5vM#~4lLmC&3pNHqInTA~F5XaU_pG^Ap`4>_N`U}1yxzHZmkQo>IKl;fqO zTgJB#m~2VdF08BvdyH+X&Cf4kfd4O)s>+frgOdnwqyPknT#NjPmdW!^n7HIw1|C<_ zvD(>cZB3jloeBA|#0-?Mxw-%}+6!+QR08&boV_eSxL@W_LmhTWNxUn9Lc*Oq-FG+- zp;Z!5DbxSJ!TXXwC-ZIhv)pucCZqZNO>zPIby*9i#{{Pmse6EK&N;IC+%;1 zNX$7frm5rRjLbALb0qlhM@aKn)TV=n@Cfhr)nMhVe?b$c zM)~*mgHj__*a5GyGG+Ssg>@I-`g`K5g2>ntcJCkC@MO3ClQ<2Npf6gk-Q@DoIUs-w zd&atX=Jf(`syu64mLdpK%y$&glNy_+TqAIRP7;|rcBCO(uiE1Ut~i-hJc^%PO|L9A zcz__yS*4DUYlxIw)fwr#eTNt($fg1_63AjIUz(?AX=na; z_gfKJclXYSnmmlHArkqqOS;Q>Jc+r{$or7p{mwQiu!NiH$c_xo3Do06W(0n|ckKW` zaXrNG7cinb?tQSaEvY}%kIHAmd!9H;$a2_|XC~40vZN)I5@%9`XrU!_sCB}*oGja4 zfh~@2MKpy%7rMl*FKf8y%F_;+wDiq|Oj7wWQ*>~bvaBYey3CdYSwcvL$74sWEV?qqa;vdB6aIHEl37*=8q<_UJglzqx+SqO$dfXtlCGbCigg}TLpxnK-qdyi$3qxCXrRi{ zS`xgGo%Ob!!c5BYW`vn3=!{AhSrVR_1z!Z2%0|VqY1m6FXqWLFC+QNO|!kJ|5$98G>uOJe5 z9x*?0RyA8I26fwZM(GCBl!J#<9b_bnXz#~N)AiaEeAoxPT$m>eke$3=VLmcTu z9dN8rew)5+Ot-}N7v3y3SgZguLO!=L2&kJj)vEh25U7i3%8-YUt- zT1U-E4*2O#LYR`$SM{WWVb>v_W_hAwIEs9&p=hq_D*+t?!v{Dy3Ljn6t*-x(yLpoK zLg4nz^G253N;0z1h|^UoG#Wrp6tX0alOWxcGM7J)Qln?gv)a;%vZu~=5ri5^FR0KEg1TXThk`=9-?A8}vxyOj9DU%jC zpkap5QA69-fCHqb+&EC|H>+>m4d%)pHLuEnNqCA|;^G`xIJ(DgP9PUj?|TT7a=&=) zSPn^?k*Y>Hz*O|G{WVNQjTinTD~~$#B8iq5IYHWP;s*dDoin9;5YClmI{Fv?2_7E} zkN&+Vjp5KF2&P;fnbY83E`|M{3CJ$VM?LQxC3mY~IW)oXR=@ry`G=8$fMzeW^Xv^Z=^I&y`X zXkA|CwI)0Zw>_QVEH93%gT;T%hinrceRg2yK#uKuxSgs9OcMQuO)wd*oWA$3G22Mc zj5DjJH%vsAf!zQ9lVJd&MN(0esnRy>RnMG*<~iTP(9PYEJrQ>7S`@8@B?&%5L9)$z zsQ6ZMi^>r7jT>K{q#f8~eN7pMs}~?utDcWUj^sd17pf@7Ht~SZY^#9KMwLcx@f#hC z=-hmrI=LKO-4sbTp{gKknckjS|HNbG2}j{qcfGU9=NP+RYSj4IB6 z^_VePK@h_MtQw-;aF#@wIAr^AZZ;{!15PZ?(-(U-%W4niC32i^GnHJjlX7awCosim z2}=9H14WT}2Ivfes==upndLUzc~zg>aEH5uqnrrMAeVh|*$Y@?cw5>h!z#;9IEJUdw*tM-j>7)+Fz;aWH3nrXOb zI?94v+x%#Hv{`#qlv6S150E6)qG&+*bRGZ9Hfx}+rUYEpvf6PI!7+w*UFYbU<3Rw)Vl_0EmHdJRM0}F7} z8`cwPpd=Rw!!DYI)z3vfFN znayljzmm`0{Fi;qSP;div=?hSaM1hPm<&o{PqL@oM+titMM7kVeM%J=*+Wx!KrEFm zFa&|I!-9f+k_SgG%lBaMY-TCNoM@lSUQl)Q&KJm5#5Jh3_v-!48fGTw%jHZf(YIq! zfOBbiP*!on(D^`l*lS0`B#lzEMv|hbGtjD%Z#TN`E6N_IulGOb41_pSbQ({t4QY+^ zzFz+`$gCY8J?`kgddouwXF$i3jjU7yJn$llov5CBc_exBQteCXQEOXqMr#tdP7q3p3HTHDF)5Zs8(24XFS0zn36(G zSu*C^CTUXXZ@nUa4FjhUC?khB$V;{aBVlA>JB#90Xt2rd62tH;W}c_1tI!_?#!zA) zIGUU>HTSgJ+nWLoF@SoQ{CSB%zrC7DE=%lIZYooVG-b)DFIPXUNN(+cwfh-iov${txO726@) z2;;E@^5e(gs12rWEs0!g0|{cF4&zdOL7PCCwSQSUYM}0)mHzC{zuKEq(1*lrqHp!B zH*{X~EdqFA+l*F@#z1|YMMZmmjhh>8VLnF@$W)~^+WLZ+D9(6YYH7-S^=3bZ_OB9K zcWo|+HRk5eCHu`wCOYv^vl@H$7cslA(^n2Fo%bPM)|^P!9}EADwK@Rkve(s|jO_K8 z@ek^^ao7nGcos!2PBC{k6SE1TrAl%W!l9GlIr8SX_3^Q)7dC>iGLQRsriM7R-;z&k z()11$Kiul!Ie`FMoJ&Z1-wUglwyjOtH>MbA?Az*`5=3E4k89v^if=h@T+z zd81n}o6{_Xeap_5ZpA zdei!EA(K@wGp5PO#O{*{r*FZ#JZdEnl9>C~7Uo1P7j7xg`in89DabKCyCo{So;3jLhxM!!|!K8vh+`V{@ipD}{&C>yC%X z>27d_VMK2%i^A8vbPw9Lcn>K)59LnL%i?7v2-Q{V&f76UYMlO1B?BV^Zsgr~ZO;Zd zXcNOWW1-8!FW?ISQ**(-8VL)nGpE%K{-6{_;yQpx3@~KMUIbk%o@FbC{{7Uau1%iL z2x`Csn7ePyN1^HNI=3hFpM+g2rIcsKHEaFdUC?iTNjWYU59UE}#QfMqQb!s6T zH^_A>1fcCr(%pR=BLecxGiU3KzWhIUMP1(`r5}1e8VGVqjHbpF@`W0=&sw+B@GVNR7By2yR^TwRm*+ErJ2yw@o%2cE z6(rx`;MdJ%XE(i*Hw*Lvo*02~S!=CMu0pJQcW$#e({b}Tg1^s;DmL^@1&6Rw(C1YMm3 zqek7*ZrJi=mzOIJ-#c+yJ5M<8g>Mggy;XPGNjWMMl}cy5v&zQCdaZ{-X281Wh6Y)I z00uUTjqkePY?41FB05(GSU%}9Jrjdi(9TN;l=mY|qU0xL(=M!i47#_=uhRmXck?Wj zPNu{ZKffl@bB3qdZoYI^I$2rC97=Z0-%6s#F~lJ${D}n?k+Z6$67lWxCe7mFE&Pxf zP?R@4Z{M#=Zec5L&Ait4$_+hY2KO5PP62LSo?judBwT)o3UhO=TrmzWG3rYRz^;J0 zw7t7k+xqu$U@ zmM4w1IF^T3_RLYO!=w3@1sMf}VcoM7Ib%|XPmey}TmwfBpP|mP)G8f8$9#i1O?GKz zumDOA@m9f=1}BEN%1*6-m8VXVo;{&SN~W!vp2(eAt6J;@&|at2lhc|q~Bl2Fxj0owa5c#Dg0iRNP3Wo+|nfB%AmU@RELowcb;laL6B>%O!GOk zpK1aog#q-*L16$Hl-&1z&e}8PeiaBi zi!I5w?cc{2OrfJNFaC8w>g7tlB{!E?zD3po`zKeC6id&xLG#iRJSwWh3BSKmMb9SX z3~VpupjF{9bryW}krW5Dbc#;u*kQy}5x*zt=WcmGpUuQyWN6Fph`WjKM@=7s|dHpR`q&C~LwODkzHL02uiJZZ;8~G0pKXYwPGk z8_V^pFinQS_IozB+A0cY)Ae4pdHxGNpp0X4$3#1P%P@Gvbr>2hyw~pET>hKPq9#60N_GvVz^M}0>rX=T#*qI=PYj+*gFxE7c4 zud~N4v!x#O2jFqCdPUAl43gJJAx8c?nnLe96hWtbl_^}GH%hwo3S$J;f+9NTbD3sa zBc2N9vi`g=|2!YwW=4=l&fzv&8@w@Vh*Y8cT-++qU_Ps9X&)PD_8~Ic-aFq9O-_Zd z^qf=MZ`uRVbj{JqPsvul`uv4k+C-KAnemgFr1Wk=2JjiFP_*r|?_0htMJSx_Ha3pA zMS-gLj94AqY}&tgs(#xMjPzOe)0r>t_JFGR__DqF*vYGWiC9(RQ?pJG`h@`z#~dxb z)y8tffIpf$#Jw2|4qPLlzljc^zwHZaUZu#=dE_p5^R_ptt@~o;5n8H9G;Lf^qTR($ z{Db;p_))DaKNT5Gh$vy}ymbVuhNZA=vA~K>fL}L7j4_a32zOX^oju9k?hAKXc2&L? zr%6+xCgvrC-Yx{Fq!%vHjM=>PH;nu_+v;Dxtq3U<@LX_wAE^i_7w}YV{~%R;51ak! z%8#|XPpW738VCM^HqgF__Ia!@Lo9*Mc5EB-1v<|@iZm`+kTp>linbhQ5 ze=~6m`n>oLMP}k>Ea|R~$%Q_qln3T*K(Jqow-3n^fMHMt!KehwSlM%$)oIQHT1&_%%<*=Owh20}M ztcwlFxCG6VAtX$6fT+0KdB`(`J)_4Apt4^iTDY|d251-0hmOc3a%`#n}!E2 ztKIN2y{@jZBxOY{ujFrQj5iEuuwXL}I6y?^DfH=hHaS3w1QbzEs;xhbUpNi;8HW06 z$-XB|mw;qK9I!T6 zp*G>L`2>d}`N%W+89*f)1T~8QjYot7PsDXdZ3*?y_ch>o@FNCeL%v4%kjqRa*!b>x zq+=zumr_N5#hHED)JmZ*H-iO0#daAwBs+$q_tfKr$f=X(ITj-m8naI7?FYA!CjESjq# zTlz$Xl52kP%&6v}eg$sAY8fX<+11OhpPmA1qU(=G{N0tc;7+ z%F-1XaT-|&JhwJ4Nwi%K#W!!PEu37x@N~EUbRxV?WS^p^v&-hVmdm@9o_*{s>7~n_ z@i&$-e%o86V_1q&yTnKUtK@rVzHh0#9F=#W2n8uNrb(~qCVp!bn6uRR5DZU}Hz{{s zvQdbO(CIKmX2sFDG^6A}5&RZuXySeQt@$F@<})l&f%q0q-A1Ix%=&RLnJFab`@1|HG-Eh z`VD<#a@pSx6W>F9Na+z9?kM~!sz-y*m5iR4DP=$NiZbrjJ{!vODXrnmnZGk_+{{ng z+($9UYy_yt6I;mujj2i>PCL#B-2IwX%RPzp%uvf%T-7&s;a6`uofmoAUkoM(We_XzHav;k|0lZK*c`627jA ztK?@^F+onZ$Ftc&PF21yqgGX;!mBGvd{6`7F5Wpgv?U&JvYT}e8_BX>>U7zt*7^rj1Gmkn`ukU>$nom0BX4uHJt-> z$ei^kW+bt^xQgR7wyB$Dqc|KHAviM%AI(#k=?l8Vo?;@UdJB`dR{E`!(>QcK3%sbO z0*y?elHVQR^|TP7jwK$+$v7dV2$qOCx%LotGYTk3On5Lk?-H!^voNLRgfyGZTm|<126`yLy zmy&a5nCaF{aQ*zh5fHjSvBwV_zLb>`j0qsUTJqZ*^-I+?YctzZCh1^IOwK9(?h@+H z5E^vQpC$6PTf~qUu%DZGthCTb*3CpcU-Jp2l-f02v6vDXtwh1WX0TCPn2JM~Fky)8 zLb5^%Jb9kZm6TCwjeDr}>boP98WQI|b3+n?3Zd6yMB+4AtvIW_NL4%;kOBMDf+9d9 z)65dT8FDlQ*x^N`ZAL379Ni6l7vg{MA@jm-4YGPxGpxDwCDZ)`11xN0J+zVx;B0)Q z?f?{Y1NSxzUQg1N>$Q^ zi;L>pBQC6!zkIz;cfZ+6)~CVtCy-7m;;FRY^E!H}AFnO>C-o z+|0`&&3P-`xAZ1d@$kqM+ze+@c)IPFP}rAvU`?+Y@OYKL^u#Y0_ZV=S16o;3dhW$& zgC)> z-xc+2uDSGUcW$}_eHKKo);Fz7NquANI}wz!&gSjL_zs{7$UpSi-IdMbsh9-Op&H=T zluh1!CS8!D(8?l$7;;(y6#g15lB#iMvDJA~HoCI?R*aE-C8SK8Rv4Ffvte)LD9Tp; zf+5dMn<$cufM7yfdsI86~{+N@&>*cVrv*!g&*sKbSHCZn4+8uGEbrcR7x$&US0!RZ`5T{ zqoZw#XsSw=8s?L%5NDC&ksVlAjwHl8gMvyzKLQ|LC^j%5YhFV#u{9WTED{`$IulaI zT_}4(EGet0ixZh5RG6|dj*B;vXUGlwAw7lTkgk|})W->8c_)}PK<)J#qY*Qh(l>^%RAmtXB5L!tY9~DljTxssl``%d8 zl8=6t0Y$eb^#|7bf&n|cKUM+%+O1pW$MTKB=x#|P#Um#m8Y3W8>KS};6Hh`BO-b#g z%7o>o5HEkAuwZi067}7qp0@J0^8kfQ0u2uktXu~$1U^MHcx*V{zS!;=!2 zWEuY%x)JZ?=cT4l@uc^<6SE%S;m(oN>_of4!%R*f%5`U*{|v^aejxdqeTU0SPTM;2 zR+e?#ThJv?eRHi!fk)T4y#9dv2sV9J<_|~8(Q;Elga+X=;f!W%?XfuS8k# zA>LO)0H5>Jcp~0Mk=pcGur(LsD?jkUN40h=-cI3AD&W{o(K-VJ+sP|U3OF}VxaJ}| zKhKMYEijPP_Yl1X;s3`-J;ofeX|5ohIEyJOE_c9Ex5!IJYw`GoZdE%J7L zlXBtp35~kt^0Gy2+LCF+c44xF_KG#CaDS<-1l61lb|x=C?d45h$rqdJl@)4-Gelov zK6U|%gP2ZdfH_5XA-tPO027i$tOs^>n%1A-S%1Kh2lldmXAFBy)ojAZ=_!fyPR7_z6 z^toMzO4|vUs@YXzg!dz-!XGgCpNgUk@A)iPcc$MkR?$#BbsHl zUOKO+?iG5{NJQ*37|niI3B2fCzqn(+_uB2iMX8%sw!qxSDxs9e2^GaJd43;vtyj}f zlIa2Z&jo|h)1M}K7cWl~^(!elsxoO0ZVwW6#hvlex~nu@;C2;Y^uU*mSXo$*yC8-n z;^=}L86FA`nDeX0#;?_(Vy_agrH&e1=P85whx09DNkF8aLbZ^EpF;sI7~KD z3+<0ZKZq`j(=Liu-mGU;kcWo$N=B&OWH;B%AV9OC4N%$fvK5QSdBtzA&$CGte-E3F z@H72GojFkW^DG2k0%e9}>dkE-Ue;u{q)*BS$^s`5!C$OT0a;U^G~;tm@lp{^5bl@T!=3u1VX}jZq*o zydR%B@C6gURp|bx!PBTeC$Otr55|1pu@Q+#L$u*bBypF)sIkThX9{sadj5bHCZo~s zODi_JC*wM=`SPp#AYX9UWZ0>yO}g7}9Y%E6%uRX1oC8Qp9BTiRA&UmwxBlqPe8N+9 z+m z|4s@_d(6O<;Dz~=_bS>=nCD-?vE?*&yxnIbT2(*#D70-h1Yn02A%{B~?Z`7PS&9pk z8L7Tp6$2XK+XE(d0`h({za+ih<7}Qvq}kVhmro1C!{3@zQo>88C)@!4cAakcNcNo!PBve{A!S><%7r)&ACJd#weATvLr6O(e!IgSXnfTKGNYo|#6 zt|y}ERRBw^=Fh9L$?_Ev%0LsYa*JlGqBA{U4FEWg$*l1C_@Y(aQKKMkT`;S4#503r z60{@MV9kfN=S+s_*}<*H4iI-%5tB;Hu)_^BC~hIElKHgB4Syv!@>MX*A>MG}{Xzrv zY%T~B(9;FGwA|-`?mir?xiuYM2pM+>JJmr(HI!jJ`J>XTpR}neOMXX1w`%22PK&T@ zc?m#NAwPu|v+Y73G7*H92XQNA@mu!ZB$;mS2=|nEN0!4;9B8UOGj+kYqa+EzxhEBm zSOn>}7?udL+)^r`nVd3}lPA^>vCd;FpjW@0DNOv)qmIVS(VF#hRYePWH~SMS4SoFV z4h>@X%l!WVhd_A0rF?Nb(q@&b&P*GMr#drj%z~Y-f0AcK<_SnDepl}OX!d+O3dX~z z$`fSId0Y1hvL~!n!jQ@!7%0+%ZmO&bc0fO9G^3ZTmhJWM+`jTUFQ zJQ+2ae~z{_+^6=GG5maGts8vCcr8~r`Hbt3)#reK)4>=I8ID^uyJX2eV7d;oiS^+J^KvS>{$Y@e;2-Et=<{&RXz>3r={TEgf*(ok325s^QhTo2pD!Q*=f5RC%mIl4X>Y)-l#E6&ZF+%(xQ)A;?8$B= z?xrf%x#)XfjW-mWs>XCfLFs2qL#@HkKj1U;#SL{7=e}2WO&x5c!GBPR!7ocXa0&ST zz}#=`a@+fi3*6fM6Po+2-J0$F)^2?Ue}8Lt4HkcEm(}F&g%hn0b3m;tp4!^o$oD{N zmka+{&wgRzAw!tgdTsDct!A=ftJZ|ZHP97XP!8iVLg+3?b<=}d_B_WLVq&K26Kf=_ z1tm?g>T=nF$ds|zDk4(`Em9KM=(1+s9)*Fp!c+`WxmP6E?}{1wc3N z6>QJI-0+7c)C7?gpXwu+x8N3tocIK1Oj;kBIu%!|fc{Q`h*GgpY0tZ?lV}w+8Y|lW zf|qvHvS)5qsPUy6CQ`;)hie5+f5gnt_@`xUp9YU(*%PM!P5oIWfqj{VUq{0j92dXK zss5YkSSgUwxp{YEfeg_4Jj4b1DmpPNQ*t(m?U|z+Zfd|es9eAcC7^PRg@!*lffsIL z=rA?vGcWA9pEa8o@*CF-OMS27HMamf6(=Dj$y%U zOxP1m*KSM{$Sch_F>yWTq!E#*=huuzle=*+Ggcbsb#2cmEq+}`72I|9EYv@l(PqzY z-4LVAo(Q|)CJ@{mk?UH3S|f6ewT^26%0$h%7UVUs6zPrXi|5-DTnj<+%4E!s=UroU z&DW+MDWIq#eW7K~ovl0Me;ze5*MiT;gZngcon|N*mTN2?PZF)NE1VLWs%{WnOdiz0 z{`ENMUkhdWD!)=M8})1Pky6045egy9*^s&Ka9s_2+P6V22ph;piJRnIJg|HKWAt|ESH1Hqdz8~R~OLgsh;p#NP zP8D`6L4p1oM2TQTXBv+T%PE+UeU~IGB)V91g-+c0<6r#oe^Y?=uz;l{V{owAc|$b< zY^rO6ODr>z#_qDtDZup>xH=$b@L0;owVCq zbR3UeahF@?!A}pZ{8o{u0STir(|9oC=B>`^+Gt~8(G4~6=Hgl{7{D>0ToaOuJW7F1Ay75&XyIcMmwRjVZ(R;NEe9wmboZ=;CasDSha{J#Wx(gdhlE0MExn!pTru|8`ODQ|kDb0;1NPXt%v9`= zgxdNr$4-T2#vEPXd>vS0=S~;L8vWDeZ8&}Ke`gI>5M(=nOX{Gj$H3^}aUAH!IolLT zH{Rw#6Y28ff+qMXDmtJmsB6X%Qk010n)fAdGYO!v zs|iLekO+k^4TzCj4Y9>Sx3ncDbXez$+M4wRxf}@1tb%|oZ5_+AkkOG4E?9vuElmhQ zf5&t%LQ5MTD%DgXI7^fUfo7(m5cDk`l9ea(&CVX2S6bh^DJaVuh$RY&XKgq_o+e|b zslqF4G*V8KP{yFf4AG|D3}cSB(2Y^wue@Ui^3DrCJGK`gVzww zCW;Q{eXJ*vO`HuS^@AM1Cdz`=cPbvYCJJP|V}`*Wdtz%gDsa7fP$r&R&6A(8u^K#P zv1E{?NVR@eE`_S+h4=7SHBojnLvP6;tOfIQCCm($un}G>8rSK7YDHN?zFLlLe@VdJxE7C2F1Kl)dCrL31i;Or^Y<_2HkrN>m~IQ+iRMJq6c>+FV3~ zs!eesTKQVy@KB7U#L+SBm7$3CRE=n^*=r98kF)_j>aV98rjuo zdCaQV)vD%hjpXVgGJfu}@xKYIY?6rGqjvq2ZIXnNW2C>6K;1fN-b_OwK%ZokkHTiR z&(0nu(7Tls6CsAY&zfJv4ap@0;RaY0f{j#PpWy>F%Pmc+hwCbre-%dT#(D7Ycr==F ziL`Elc0r!MkikC*{o!bG2h>}8y|eoceg;64Z3m5>A1fhhwnL(`z#sM}fg6|dZFIS{?Om!jjs9vV z^k09KJ!EGdwuRDosA!)X-BzauBm z{7n{#+IrC(MPI~kiSIH}W0{%^!sFFvadUQ_g~u#vabHcsnY1O26~pIh?s-v`Eu(P_ z@p`Sswao(r7}u9ushK5y6sxr(08a8F!8~FvLScQ_e+zSeIVsXbu{Zg6H0%c*;7I;J zp|DM*oK^m4`alQdvZ|gnU3OKk8MPTY!s^dt!-4-bNGiBL9(O1G=`fgHMNc<3;@cHII7y6J<@1WYigCib0C^+rN|)32{E0qX-nD=8e-9>^C|81g)0$EGpf_S|-1gWvi;~%A z38bjiI~0o-D_X{kmhZ9oJXF+zZ8nsY@>GeM#R{uTiiD)`1o=`E>dOp#Pw}XW^Pz@& z_9XjY+Y7%2({Iz!EbxNgN3%FCwq3=U*|**;&NkZdhDk1rDWlbptWd7T*ZbC+0~1O2 zf02)+QhZuAu_!mi+RE z^e{yIr}>~hvgJX|#ib7FdlDS1p}5pRf05!+OJ`dV-&VX=bnY8X@WORHK5{#&~g1AR7qf94yQ zVqeP-k^RUeCdHYP{H&O6sr{^zirLzwfc$sw#-H8XdyPbfoHq&sMwO%ZXq4K?8%LX8 zamH_FIt{1Nd3+yC1+s{@#dxUf#%uZL@B;Z`Px>z8shNcee^i>A%&CyGVOv{@knL_;8Ck;)l^U^?>0qd)xXadOXol+XC5FP~9+Wr`YWk8MEGJ)y=$bvgGnzC-KC zxJTP>ZDy5;^|rAi6r!*Ts?b4RDHk(G3%lwnQ`D1nZ#Ok;JUgpc%SBZbe-|f9pM#N!te|`su8H@r69kEb2Sc1!S)XLZ4==ucS%lu=}~D zXuV_UQ;b1JO_7Q@RnM`$`xNDY@sksrtPt7v-1)9^vc z9jjbywkxiM%7YX?Y}hWwZ6>ElktBG>th5)Bm&^qhNs*t7Al&joeiqsulV$xiS&{&<^fb(C_puT6T6plo`j}=y5V(-b zIuV4P4TK3@V_hBQ4ud)vu0GZf7iU>LB+}u#$G(9VuZ05 zx~UFf>{Vy#Ko}B!=L8nC*;P2MK$M(R%8U07jEVI!P`o1@LMX95rqR7hZ295S zNY$>YmrNf^f0FI1c_)`=cOMKsmvNntMyiAGDFiy$*=vDrD!4*~L##*_ifEdG5lpor zO2q(4yMnlFT?xdb!65(ZORw!o1s~0x4UuyediTNjQB@7`uH~tdX?#W@u2prm>)(Q# zS(KePOcE1vs=gEkn=f12drz`i{0Du*-CR#~suYhTe~=^frMkOJ5_QUsxK4EgUqP6#s(?a@k>*w%(qDh`dVIT{>tF;#Qu@j14@9cpsq9Jy^D;Jxzb`U{7MHpUPAxE%> zCQE%V3+DjF47Lo*lj(jb*ZYw+6tU`t?Las-{Qb`E+nv|o-2xHg=Vs@soxGA*nY|q} zxyskWf1r(5iX2ZHidab1vi%uH!KD>6V~avznB9+}rbRXQ&nV18&sGZBc=e$n+_BMR z;|Mi;zq9ua91%Aw)i%GBiWqsmI`ZZcH^$`mxKzRF-7bD~@6Wt%f#*+yxlNR5|In;Y zxF@6QuBI)T6)rOuE%O9>346vYqGv4h+#2`rf9lXH%O#F%vbbC<8PlTyWXmZ)zLYv`;wL6i9!5@3#Eml-E z{f~2%1}I$KLCZGt@0#cS9TO@*-Y1@Oe+GG$a-MaB(V#aG>bthVPrehICNSiIazEe* zqmipKIP9W4CmbwPdFK;66tyygRRf0HcM;@pVj7D0Msn{vAaduaq~QHWbkt@6v~y!@{R76tBJV&k}SdAupHqFgf$#@#@1<*qM}bf5E@Q zADP6KGcUa}2>y|A;@DNE^WX9b+4Qm+G_kJ`!pzeqkK( zn6G%EyW0>TETa{1^E|n(!(Wvjmz0Rkb~g}Kk{C!xN!g5onS7$fK4wX^Q-99wg$gg9 z72gTssi$pHKK%_o0ckOXRRP7Te<(`Ir~b?*o)x^UFH5_4smEke&h!uRo8N*DO*rA* zdD{^5AGrc}hJsVe*`kDSQn>7-5X_=v7*L+$?_PMD{GR>hA;k!Z6M!vit{5SlY@UCo zs4H2)p=qQr5ntz6k^6W-UP>zi3uMciMSmfsa$YACFE%CL9EuK-3_3VJf1Jryg>t=_ zhC+dn4?W;=9joY}ZrQcN2b8kS3Lo~&?c(sEtrdeGf&2p-fY@`rApp@*Dce+ir3K@{ z5PRZwZ5U!tvaSw8?77mFV2C||xk?PN=Ox=QM9Xtu;p&5?e*nJ~?fp3DH#e;hf*G??Z{4$k!a zfMA{W`WU-3N`5ofb6PG(xUlO=TB}xPmJz$!eBctW$dTDgfklp_UJw>5$mh+`Wq>G4 zV~tT_d1klSrmQ4b zX09o27cz5AchLmy!adJmt|>wH%Q9c}p;tNlLIU62+>9n!DHbdV^-Hs0X`>N>{wNnV z=6B@LUx|mQEd7f77GRar@%r{HoVJowvxj z+-g5Odxt@Axs?rCyV59WaVK2^l6Fqp-IIl={=@T6ck^CHzq^eHe|ATDZf;ts?o!!~tyrj}rIL18G1)D4qHJDkulP-(S4^KNvuJm+eqEhu z+f0v923D=Wvfa0ELteZa)JsqNLt>C<;i*pDk%mVrebd9>)_)q$VybMm#Xu94fh$WK z5$=zuF+Q~(d7d&n6h|V$N&rn#U=>j*d6DM^u~51pe}zS*KsCk8RqThQZuu10Cgn`~ytM}N~lF{0@Km8 zQ(c|Hr7n;a=}cwf1j3(1x@Upw|ebXmNo&gZRda}lW(nW z5hW9osSmSq6C8rvifXu>22*sIOi+k8%QO^Ies5WFtP3S7pwra>Dmb&2jdxtek5N6- znBv}0xRSKC((yrKR!Q!#l935#V8(1UI0F%A8F2<;(J~E%LTD~w7e0P8!*kUb(Z}Gs zf3Zi^9aq0)!pDk5N2ImP$wU%uryKi3Eg{>Rm);sjp^4pD72Yymv*w!#ycqEWF-zo%fMnon*%G9y3j@)mjtIH1{5aj zIIse)Lm;MM$*B9&)KrUW$4kJq0#@{Nh{A-S2ZdU8#8JuIWG^DCpN@_OZ`32Ke>sZ2 zOoK@LLgNL~>R6%ADNy|Rk0d-RclNfnO1G6?Y&(6yY{!q>52U}w1@Q+gO+N^<Ya<#{`j%=Ewyg`nqYNfYn;*xc z!SiJ1|K9v^);aF}T~pKYvQ5#Le>XXQh%WD(0@gn5FkuLOfiZ}!m}^XeBW~>CBA>TE zG3f1v3pw)}FA();oo^tT>gU{`Aa}4XksM zA89L9wvsy`n-THPT}t0{)J;S_yeq1%o%t#*2|3A0BK)RIUje+@df)0!Yd z*}}U7D~_q~E@4D66FE`lT^wl7K%%(OmA6kSocOlvS9>@w1%f4FsnF(NQiw(RI^*d<+CsTAtbh zg;qK_G;f6zDy!K*6rDBS)Fz9f`PCmk;WDH8Ku<_ne`)Pt`ee$L4W}Ld z=Dxus8->}dB=dGmqVdYQp0_{ARh6%a)YkL7-|Z=c8ItC0TS_n? z>K{6Z09Lrj=GkRVQdbO!zo~v%-y87Uh?_{cK1R1*BRxN3za+xg zeA-W;Fsc(^uQ3xJ1gqe8vKTwlQsS*e63Zzi6wBAqB?Q2z zwHr~UgBOT@hHZ@~`8n}N?N@B2yUpeKqRoxwiq0^cTRC4xrg16v6W5q!FP&whe1Xhq z#$x_8q-&8dg`(+Ck@z#$vZVOt&R{#K)jcw3yI=m1K^hNgY*O?=0}*jF`9{767UY{< zGWq6Qe6f+#f17tQsbLqbPgs(Hg^xrnX*~*?-G1lyn?Pk*IbYPRomLrEjYEiukV0;3 z^H}_!BWGe?YULhURiUU5Uxa!x$v~jHtjfT(5M{Y6_`VakEa~GWU;W`k{&yNQN0VXj zd$TM5->Hx9cV2^+0D`>^8p5gkeZe*;rcA?lnO%!JV(d)ZEnkT-#M z<41wRr9=}3vU%NQmI&*S(tvL>zk8&)%m|Ha&+ZGe?+|G$LM4+SHLv zm1dTAf1x*M_l^$xf4@5JpBya;GOKG+xk4_bIeEFYEncT`_4HRmf9C72B7ZWx4u5xf z0BD!0ofJbT4@Fo#)Y-s>mvEtIiJ9sR7sbALsn5DLlqut4R$gel(tc_Ct70$Hg!5nA zY)@mU@#@D;*F9l}VBf-`j;=-E(XFgWGYo@hf1*PSGcWjk6gdy$?!nF;y3`DroW#vV z1D5FkgF1!cq)8K9e%+l6^g?M^i&Ht{{m=0S61I`z!k$f^^BM!d8$)p%$d7uvG&PbR zji#z=<|v37Y2;$VABvCpyD(s8H}_s6@znF2TSQtaykd2{P50CAn~Lw8Jxyk#hhQ#M zf5TOXj3yL??UIv`1dmyuqDWdjngR;L@zOV# zb3RbQ+{0)%90#6y=Ek)H%!5vRGs%fnkG*+hJN})q>-HhiY}jg#z)MH0Jz{PjTxn7~1+9L$vD4=T2uac&De>)8y`jg;Lyc35F{YKY!X7@1*f+_T z8vPM8UU;v(J@?t(-)V6dr_SjXjxH0#Dq$Lm!}g_(NM!P*&$bj`BThCHEf5>YokWc==iGg$rFTh(B*a($8B9Zs1Z>9~=0GqV zbBOy;^c4U_hTp2l@Y@2x;OEEDjXzceDa5;KJWCnI43p8eBNoFULALT;aX>_c~pta z{foR}5~$2@6Qr^-^Qkjj>A0-O=bz6yTtZuowMvBkTc1f}dzigCXtjsVU29~C>bLcu z4#V&tT+0C8Fb=VFy{}I||3+9W@=fFx3utx@iw0jfOyj|qMQ%kxct{xQe=U><`9ps+ zk)a-6KXn$Z#MEAV_e@u6834Qvbhul-o5V@aOZ0_jfVaQPtKA0=2_rYtcrfUu$s0)v zIqyvco2fN}DY2Wg;S8jvo?j;s76yh;9cg>@N=OuZ72k@4+Ka1jG8_5w6~rVC44q8l z!FZVCt|1N!!{U;+#-C>ies1azZ!DjGEo~FsM?*@r^p(mMoIluJ zu;n(`Xnrvywf75xs&UI(-Ue_`Q*FG>fv$=KWy#49w_^jLM9WiN--Je~B*q<*3 zhiyK&%TmP%Lm{`*N+s>~bm~9LNPo_Rt0;NAB!wg2lO_T+{Z@&W-3{wKTix$(EcXKNqf7O7?mqO$&cN!33$q=}- z#TLv_@w1ZUVBF2n1ab14wBps2dPIrwLP3dq}E`ZCew)j^9?~DH= zWpUJ8!HRpZBFSl-|BbnA0e>YuwM$Boqr9MB) zUof4i@(eUIf3vAjmn`cp9d>$yeh=KH!(bwQ zX*da8XC*YQS^rvI*uTRrIa`&q`-~Y;<-3Oz|AGSSP z-HzAlbIQLRrRq|rx8tbY>vqr$Ir1l?V9b1m=+T4Je}3GA(@8KM`DMWFjr#N|*r+n} z>hwl+PEODpsWTo2Vw0XZH;EjONNv)$Ky1e_`B=a#!cQKZ#JRe*b!}HK<@K%JwQE zL_Be4rxggiop{%m%J+M>;nPHU*o+@;DPWP;e;(azTIVCDN9godNNdvpQ7)ym-f7Mv zya}yciiRhiM$6GGn=WU?9AUMtCWF`M7wR8U_e%T~roFP~@H*S>WbBoc$+lM}gtzUj ze{3Jq4CtMjP`y!8V%D2d4(9ii*bkh_YgbNHKoOWcTw=} za?6+=|1QC_?foNo{uWM$-t69=c@MJ4QxJLTZ!pcMR49*R&e`juXP@sh?cYQt@>$BT zlGCoX!o+`Ap7PZh_RtfC(A1sh>lmbZ?vod2=Wihn9q_Nq&pNPo@=iI+kxOZ5AP}Ue;bV+ zC#c^k? z7s93^s9f~mLbYBb4=85OOETb&_9f3-g1r6y{lEU@{{T=+2MGO1k5|a70RRWT5&%$3 z0|XQR2nYxO0&GlK0000000000m+EU)9G4yRj|`X3^N$R->nyl!5(a(Z=CS6x&3c~{m|`_5hLz4&YI*ZT4w<#D<9 z;=ljei>`yc7ki8_F(G!s$=?26sAsc(vik__eA>1BsB_nz<0z#xNav$bjuByn^h`RZ zc>qlu5bd~;BtXJ7%Jv;JXK>Unwf7>qX$$*%GiY0P1}9}V&2Rm5kzZfD^!2>!cXTu2 z$2wl&0Q?}8Q#iT0fc9k-?-H}1CDx(MKg+6xrYCamg(UlX5vFkc=hv@a|MS~haRmgjD)1ra@otF*Fpu)HB zi24!n1c~3jA<70Nj7pIO>zE-7jA4SQpuvPF@m~@yxTv-yYTiN-TnjrRfsJUe4+&7N z6QH#~m1Lfx+%)wW>jUc*eu>tuncpY1A5mP)r-RU-?TYWXE>cs^ zir;bbU0wZBR)-P3z_h-AW^y(!Biv&MFBUv|bv>|nn+LuqP8`0VD?T9`iVsbl+1BnC ze|OV4aoH#{^lE4G!Bzj2Psw9AaGHa-fI?)gW zGs$kMB`;$v+WEyr-E>8&o1*RJ5fvVPx^Dgyow+rjNvM&@OX@?p8R-w@{OkT+hay`! zoDn@9ZtciuJoQXl!c!7lQlgV%+{s`fV_s=uz$cD2w1OQQE0W~*6zK#vbk?}p3v1IeqP)>f0825b&8OG&_)cp1SKhwj8-IUjMjP*D2YL8N{mb(R+!LgMZj0o(=Skz zZHsgdBwsY}rL5;|G0XG6g))dGWss;0b$1TU@=!h+xL#+LTomJ`cT#^KH@kD9CU48` zeC}6;ShkksR%;A3l5)j7!DtJ@QSJqB7YyTyCnUFM#|k%cCN#=_=wtAj8?Svr&mqyGG|@DH=Oz-0J_XpuzI8#>$JZ}ky?cE_R94wg ze|gBmo}eC-)mc%dBHKYW$fYTTySM1IdF7 z0E8jZ;_C_|!_TT5erV5CthY8e>a z*fj5xQNd*~EvsF*TK2dCKAI>fL779-v_uL?q~jQ0t*6=s8xh@Mx~Hv|NpDGXHmk`c zLi?hHF1y=ZWk(wrU8dQtMRpFPMNf-qAWOy>biC4kI%-XzS_z@G4$QN(vA$+^Rh8j$ zj-tgiA}hYn9;kHFAHD^wvtt0p*14rF>kC|;E!8YAq>gXUGMX>I_@%m1lcc8a;I}bm~Kz2)9OEqqjOgw{2Wcb zeGf*r^yh3^WDV=-F5Vzj9~=_hxIR2~IKObGRZ;xvkPk~sW(~@Vpn#4B+CI1jmFeJL z?u*MjXdq8@%{w%!a^@}$Fmdk__3uA?eEsIu$__OI+8;O|++A;=QqoWo|ah6iD=%f)GCmry4lHP3#D6)rqpj7v|Y3ime z>VUqei1S{~w=TVeDW-Lh6$zcswLn09r|AB2X=9@Is47m<`|(kC>8e z%iFr>nkzK2wk?i+euBC@OwFo-_8yoD|A?()CXhD*pRB0iD zOH#qMR`U^DoWbr$7?1e~!LJ#*ZDQK4kml<;?T zEYnr-#ZAlDdopx_J@WbnrDYco)AO|wCbOc>47u0J8=yDaXNGL*W%PfSgN+cO_ z&IbA2hPDBOy0e|SU^=dU4x2G;1bwGU&IwN)B>)h;SCLy4tdznlkrKzOYO5oYC4!FK z>|zS9T<1P@2-hi8T)mkmW%@|QzmH&KtrS?IYoj@$%*6wRY3?zDBDY!3-iv00wEO&%q0dGjerpE%yZ76Bv}-v7bx~{J94rQ$)k&#(L=g>J$iFmO{9ru+5l4m zZ=#Mo35Q-+?LavCc%(bd!yFK~Zd}9J;n9 zHn#6^PAx^u?K~z}7N}+%gvg~}r!6qbj3j~~#@1ph={GQ|QKVht!spC|k#g5fc~(}3 z_jMd)`uT9tv2-|0nPf#-G!aZ5IO6)QK=!3+8M^kxY4zP{*EZoW7d8&FUp;IwLiY;S z;H<-GeO88l!$lpdJ-n^^^iFu&={f0r!u-BC(;TiWI&HVa(X>3isyg@Q6XxF8{FC25 zOuUKUk4{Da2h+pBa1TH9Kem~O1~NTdfgB#4-gb3^8guvyzVKyq7ahcH-aaoEn>}*P zDoNv@dfo(R55JUfxfuIv*>?T-T%o)fpN;eogPQAq_i_wPiNWmO&QIax@UkE4`twOY zXnui8jp1)t?#|-mxAltM)dem%9oB2tFZiJ3f6f2Da}~0)$*Ydpv3~B2;Vkqn z&%ZCk4cEx}JCO1U+R&62DC2E6^nfKkahZD-^~7~4)M)@9rR1Qa| z*6rVa;Oeq&V*8dphNo~H&gGRsk68ZDq>8w(=ALr#XF1yV~ zR~lA%&fLu{=4Rr_$nqDHH){4P^BsylyI-^$_9XAzS1-A_(Fcr$jNLsAGxwB#ns5Nou)pLU12{ z{ff%*Gt#%b*9poJ9qE07w%WcBnt|uhB~(bpRSLNl8iN!Z(^7?ST^K^hie|aZr6lk5 zsIDhq-28DpZ#$_V&uwDLaV4k$is^OGo-2LQpbTAYeLNm$~#s?XV*MfkElyFHDp(?1P$mZ>Pi{_^f z=XKThG2Fjgvh()6@rl7BS9DO@$HUFI{gxyI2%I8RAWla{6(TocodV8`QUsx^pvs#S zim@i4SW&RayveO=xw-BeFlAkTxj+aSe=Qoi*THc_dI6jylxu{1HaD&&!&rKby$i9T z9zXm#d8iHGv8I77u6q!#c;Z2M@0DixiWSc%LxLMjwYWu8&K!cj=MZRD*!Fcl(&P(0 zU=LaMu-Z-MTps$AD=kE0%Bav=QIF2q0>QB5c?!}7ZSpNEZv#)Ojt)0JR9OzYf2sU) zG8{(0q(6$7ph-^_ClQkeP9iox!PuO5s~jYQ2sjV~_1;j=^9FPO=SYvO47nSecRYH>a`(3bwO7do zBdO$wn{^}%W3gw92?UZ{ zW{3#^NT8l_qBlMqM@I#5RjF@x?UgIK4DWbxEd_BTV<{0;28_yMDq%2}zuI zZO@P=-9b6?5jJfRwX~0pe=5Ml&1R z1Dks^SMHs2b-<+->}FrD%JyRFuJYmZve5VLeyKt6>u(~GIKTt~t2zd*{zUrUMZ?^Cj*|g_O$ZP7j~fEcEW6?11Tr&wm-%soEkGMv@=7v< z-OYRd_M+y&fe$iy4>fSe95FAskn-h4j$%h~y_ zXE#UZr>BQ!#}3CzZI7Mnwa?*~kjGq9DCT;t`UJk^Fu6g$O_Z=1@h4}$9DY1G*2Ld@ zIRA8dc(s_rN%-hZf-Dxxd7j-jesHd@!~g7m|3^|YC&Y$8gfDVV7sF4N=Vv#^Czlr= z5C1wmW^Wu1e_PCrhk>PpWX9as|Eh!OV;=Pk3=W)p0KaL;AY$KGi+FRULUG}D*_Flar+Ea79u#-JC#|0}EEfxZQtXlK^ zqzl9z{u|MF5J6vK9PhP>%Hgya?wV>2tC_Xf2Vp)-_}0JP zap#*d)4mDgVjLv1i3D$IfLHZh5=SIh3R~`zxDlIK^h$fldqz)sF4P)XR1%T^Xh4_0 zG>k0H+pX{C!Gxn6Z`Hrb;O5@*!UuZQe+LywDMlYOQZou z5qot7^L4x4rdi{ifp8hn0fXoqUB7Y#BI)=H-fP;nf@i_#e@n=u zhgiI7;{&&PM#W$yZLwOPq6xdVymFa-7odgo39r#jhT4f;0GKRYt>-;&BO8dNF^k_SlHFo z)YQ3~2Y=xBtFjgsp~v%E4y;IAf0eFt7KLYQxauX?-PqdM=zeN+QeyE>VrQ(3?EMW-T0{A%Pe^=A8$F=bm(31v=k+%n*u=VM0^r1AhK?8LVk)}hR zfG!*&eSp`TP+@E3C(M_?f1tvifbJYr*b`8swtziZ7}}2im3@G%ivGUZNyvDg$#bBD zZ54S%P9N$NvP9H1faBNmPdNw*;|#L6KPXyDG!)c{4}s_Kzx9d~R_Q0UKnH*m*+x1%RXsC;(JRa(s->VtA)(rcp8LsbRly!tLeI6_DH}3MRc?oH3(GrnS`D<5us)q z_z@-W%%SE^EKYOaxS7Ry`T6LGeYvp0d3_&cUy7{G1BVnle+`Z)qX4-QWSmD!2T3-I z2`~5bEUN)zsc?CtnQn5cyLFhO&Zc#YgGVmE1*ej`Q5`be6YeHx6di2#+dUzO#X*AW7pnrt zN}-kj6b#mCf1wzBQy>RR7#v3l25l)$qZVGX8W$vvjMmsm97pUBU?-tNK?UHu^G839 z0~y0^FN1cFKzGIQpZsJ#NtqJzNAuM03E#IPe9y0#Y>0W8yt13#jv(xB41j+69gG8| zbSfl;M3L#8HVAeV4}ez6#`r*jJ4a5`eee<~nR?<(f4-`bObB|gkafWm0<2kPi(Zxa zW0zfUTHj)%s8x9(#%$%l#tnt>Oh~q13cSD;bzl|Xd3cL)Lnz=@jw7T<=_w?>0wI^| z`t>aFRewM+HWl9MEmRCQ1xA&}Tb;G}7AiOEHH`2CK`~5kkzjOog_-y~)$AX0_Un2Q zTqLXRf7s*~jwY-;l|_G~O`|NElwHc|Gqs?6hZU&m{G{>RCkoZ?lE_Kqm;@=7(4jDL za&yz+o=RQ?l$T6q(rLnOLLnO?A)*E&D>(!Hpja?R*5dwQQ|w5(z?qgsJ`}%>(D0KoI3Va7=uiVXB?0@ciC5C!AHjtm8f7*ryIBcPfT_w3o1iLlH29mn=z-*Mp z*jpVidk=cqu2VxS`#8jY^{Yh&_n#>>_EQ5S!s>`7DcpZN#Ed+_ovDVfRhLl!hTA?vIhv zf6!-J2nC$9yYV1K`oElp|K&Li-*IjLJQ43Z%MDmXQUh^r0K`ZOKOTLTcc6s(es(KLZ}u3e_~RiO2P6|vE8y~RVM}tDD%LYNi>RL-xU?~ z+!OwHjoOF0@abCP4GVCi$Rt^fHD_h;dCc z6k%EBx|~VlX-jkEw7Jfbuv}~IefWLFO@%hbs@|fnA)=yI zwl&{VoQEwam=}Xs)ie*a#8Ty_pMuGRx4-5cD4*gWWk2R*^P0_5^*Ps?Xog(tCW&VG zJXKj}y*HgFsp#D8%%UXV&9`}zXaAmqXsB|$(Dmz<^Y-#7t-sR|)*|_=e?*}%x79`| zvQ}J^wB!PTr6kw7MTC0?8t98lPle|V=0M_ z+Z;?$%d0vhgAOwZs1gB8f8y-?N=#&!vndZ#hc_}$ohbBWmk7~Iml5P>9jSYdxO9^u zETTb`7Dza|mY`+KP~d($g}gxF3zxPhkw+Yq?6FJ;KRNQ)9Q(;A4rVFucW!t{wKc1| z^ni0f$Q%;zOpe#iyBW8M)%BxvLy~9XE|@Tjxp@E3qJf5IKv^I~e|k-` z_edsMT=2z%%8vrh7g0ho=SAt|4){9!kk#Z5Aa)i52Q1~F38L$A(7=RX?hhqGj4MQh zZ~`Tp5U~*kPt75rGG40HD5a7>rIiR$jORVq+Q7ux*p0)jW_w&UYCKTZ3DHn=xN6+E zNHhKAQ*2S$DaaICe^ekAm5#!}II?w03udWG^AR}oiQe~yuj7{eJ^k7`rEsWUmM zec{|t-zcg_qV~x!_f9WAxplL3Ni~U92zlI4=rqLqGPpr<=}mpLK>2l)vSjd9{;j0# zq8dTrqhv)1&^bCUSd;*jzC%=$0FZx@qjM&N07F(9Rb*BBGt| zQC8S%tk{JYVJ_D25{{)Z%An9SQJzn#y@5CQRRTd0s3QRXwfj`I&4@XFc%gob_AvOQjLW&@)sK|rD6Vo zF2ot=ZQS2A9BP&3&t~2yT4^9|` z8~${bKC9FKkl6@==vt5Bc|(hOGMOFThR z1QNgm4^$e0JBpDW>=oL`sC-VvMvqZ2&a8^eDNx_J3@Yu>ox(((X&zxi>7<}(8iw4K zR$areV>K{;bwO--ix+L#f8{McLt>Ii6jY{WPLya8-RO>s5ASy3_iAikBxBG(8IY^7 zLjQp|<+9d2R}>PNk-y}wvvqXCNojMgCFB+&Bu838=~DX>iSj6so3}#XmpPLX$S6fo zqPb)tP8P^#GJY}VP(t{{B3sCBui$27lxzb^m!ul2feEX{ioB-hf1K`g<_Eg(m@IQq zz{FFA0l*E&NcmuuEg~A&phc-6_+TM2RBi#834%&btPvA+E+rgqfHMp!d1HlXhJACM zp*;pxloUnZnI$krr(eveinTs8Ax9EJ{z*3hJa|STCGV`zel=$qLU^YrT?#z2kTRvD z8anQ2=7F`yoNheDf1tcVa{gJJSvxT20CpWe9GLU+>f&~newvg5b!j9-iW7ky3>I`eQU z2Io4;Nxgf{-RsWNLoj;K<=>Pv_#7tl8Si%EkI!d*>~R&BRkE?xjzP=>oW7=J65KhG z{*j=E%PKETIn>e?Ttd>+NEhfeR;#B?f*%D8wD;;8Cw)oI^20_YTv54ibi&n~;MTz4 zTNbVhvrlChf0Kz>b4DCEVpbtrb7o*K*Ur?)WYOVKn9Qdq(s*76z@r!X+*+`(`ZGRRg+WhaJ54$S#@^#oS(4RU;Q zYF_pDRKps@JeY+_(Kxjyxrkg=Hh_$i%(;3nPO=5)e~6Je160x;mGl8+*AYn{P-2~) zAT;qFJa_|yajWEeFk#s0tF037!Bk;Wo^z)Kl7tVY1MAPO%K`;Az$M6h29JeJmTR7j z4<-rQ`OK1#zm#K0$EL8Zm}WKwW#@wl!InEE<5PlcW$;)S8OmQqlzEmuUR7$}2u`O> z;2*$Kf9y(@fY1SnPKB31zsea&1UnVUsBXn&rsuChhJR@$3$SAKY%<&c(R~Y*+6SG8 z!dh0(LWVVoHpQG52rArEH<1!rw0c6tmcvT19b?cWe;u*23K;`XBBDW8bzCK5fNq|tU#c#J zxcRTGJ60u$rKxep%o1^0*Kq==^&YxwW{EbT!9)cQt13e-ojIiutjZK^1!cr(>_j`6 z^B}Rb3N^!N1nC>7m)xB7h|@RvglPX5KP6g)5NQx_SIi~a$g8vrP}z?}m0AYiZkANO ze>PCp%BF+;u7CFt`&DspJLewDQ*XwH(&yrUJHZN!c)+7}nNfGZ1bR+X9`M-MhCr8m zsDriAS4E?u46v_a42?#P`SZP1V|Ta}wPLqs^HYCw{znI3BACVHe_o%YT58 ze-}*rtLGV?*4;cDN!RKIkMZ%jvlUC$e-8du0@DCiZsv`?c=x^|C~_4=uAs=36j?9( z1GpX3^2QAx31Z|0Qyy*B1zAj!uk6XBTUUQL|8#nIMRc`>h?RPp<%YROli>0>Ouese zzHKzoK0<^}b4t$+Plq+w*)3=rK%7EpLG#JcU#xWFbc|8nnXiz|Y35zwi2}eze|y$w zR5T~|^6K;P@a&5HdwBKvk|^ukX!H^jt{cgd)t6qG6b02>Rtv*blso4My_bG!J-*xE z21g)>$tbNoRE_&j^YjE{J-Hq`!`eCcHGRrtGqV zbP6+aq{>H9PvaGB5-Jv9Vj(c~?%gwD+>cS1+l`tE$~ZiaYRy(B*g=R98)z3d8pt#7 z+7Ti+ae{C*PaQA5pHJCava8xicUTh+(SKr!ZO8Nc}GO3IoEE5G@Wgsz}D9@Z!uFqw=D$_raqdYIL)7seR*l zB@6ZqLh(WIOTMPM*z97Dh{y-SPhJ<>6o$*E$+_cw>qM9Iz*Z0!M<5uC^4fW);P^$G zjKfp-(#-|y3n4L%IAkVDfBEY2)|%pd|LcrR!XG=b*(Qx82M4K8$p42Z?SxPA}S$vB-)(qQV%IDy&M_6BH@ssT`+nvpKB=(i^FD*EDw z!9UqmAyr@X_yCUsOvffog~6PV+sWDe^<^4vzVCjB2nS; zLA9xAYe5;8=?s7JWgbWk63GL=tky6iCNL~+3bv8&&lM> zZ~vM9UDJmWE_vx7e|8_K9ytS2YWR*!xh+&!N~$Me~Qr_E*O`$H5{o$Y2t zR&!#vg$h9nYv`mfV3n*QpN4+QtB5G5C=3x%psjS;f8mW6dbt&N#h+UHv+jui7Es-o zVJ+Z(y5$mG1`bw8D)Xn^5a$~UZ(8#;~5Dm%33 z(>-jj*RI#-rq|Xb2Um4wD39HcFLa^LawHdha^WRxIa}r6NmP8_Hm?D(d>FK64qLgf z&{X&1TFVSde-KoMTCFk!5Mp)CIdJ*$8s{8*F+sJ*#nvttPB{69W`gk3DXPj2ljhF}$NkP4NME6Nh(Q~4q+Mze?QqqRrECM#!!OP&B97D4JZ|)Sqn-aVEX0H)+ zbAkT(&M}){RCa3(2X<&vgh#=*ZCG^lNUJRE<^RZjhjYR{5#RByioK(cC$F4D>^LuU z7KDL7f3`Rrg~QClG;*d~jLas!qk%az6M%(xYr-PX!63q-5H-z?fnDgsDQHz>3pEln zH)r#;QgVfTr&@8SwO8ya$>{JVnyj3or*KUX@A4dpO?GJ`0@|8Ei8j|yJ>lAwVxmX_8zaSj?Q+Ap!wih9^Z?Y8e_iy%80k+a7aZAFvVH>G!D1vkrX;&T z$4S5eRo)cyA+?`UY!9pUmRKc=g7RqkOKCKDL#$uQq7jBzzu(9ZQ)acBNa)Mxj=w;cnYe$nin|I3nT zf14!(B>aD4mJIy7G|Q4%6zn8Aw#|}dwD*;Y2!zhSWDIRVQwZ9^BoI?=oDCy=1N`6E zcY|>3e|1mz-!52l(l*Hkx#ir&UqGONvaG79JyPpw#; z2sUTF;CzRO(LgaAL~2Ejn*q5M2tq-je;>Qc3Nac)_7=Q^OLw%Y78z$5%bG6I}2qvS+>A6K4W zfx#~q{Tw1+!S3vZdpl62T346ofp2nCrja7ggXXqq&ZPlY#S*YED_B_I|A?-(f1qNr zM68FwB#S$Y6A<2HTIa7IW{Ls$rtx!KA!e{E6I;*?0%CWxULv>*fLo3u{% zAWI-Zxh}T;6_&1N&QL3Xx@^pfm{4m_{v8m!4F&?TdsX*w!P#{6^Uismfc$16dXoNqQAo z(gIDNVjMqU66ovLK&5MSa{RH)BdWGuCY`lRMI(~{7%fG$Y}*2P-#mR zA=^dD+AL0{qGJmXk7_C`+(-FV?caD?`^fRKc-nG`c}1({DBKWvl0^NQcaeRQUppsd zs#N}_6NQs!hbMUYGFGeFc?Tl$CUZLzu@LJ{z}^fd6X({KN@}c@e}iaF$QZn^D2 z@#xY&{Wy}drdoZltfz{!?c!>r=;Tjmlk8=aqy8+Q<8{b2HtGs{-I|1%ovE|jUYp3? z*=-xZKpGO)e(7NarivbB z5V1Ezwv$y)0i|~2%cpSp9Hh_A)Mr05PB`3IK$(RffqPt}!zhE6KYDQx%@gOf$_o(r z0v2yfU!eZ`dqDC*w?V2>9-wrQLSDqeu%{}YLeS;}JQT8oexWjgLU)&ecPD4Z!{0Ol z>3U5eO(ja+e-o}!;jx>CNpK%ZC!>GQH1G9V9pZ5SoK)L95yVhLc_N4%!{>=8KWY^E z?>%;u#fE5Cca}S%p5{|Cg4A_B`rcST_}TL`W;O@^=IJ3w{e)dK*)LZfV;b8MlSIOp zZ#wnIRw;uRnJhUZnfW6@i9-JdTuwfElVI%h_z|c)e*mwlr-HIDsS-sH_w!~Yd8A~> zVWE{kDKIKNZv?kk7&Nk?PjTK!9^74^+2x<8afc#+^%zL82#zoAR&J1-MdAN2cKfWj z?L;zLFF%R8FgaWvf?KlGhRKaug$mDvYRA&F#!iz=kdkj%a?@QLP0tm7_0<096oRz0 zkyJcKe^i?nyf~{fzQM^OH7c7eCh)!kPaDZpwpUE)6x{>L(P@6)wpY4EkccR{3pEL# z8X8I>ycjRhfbfP^H6}qJNmp%UW)%==eNYkzKX-Sb*7c4BoM-2W53E z1aKim)L!!)xo#LRZPDa7%QXYwBmoT#C}9{-f0ZyaI6ch7_=WSa*v%ZBbww*)a1RL0ht4&cp2`I+rDgzj=twj;Ffx!RUMBH+PtmfV&AFDu-MLNp-0+Y-vC zf5`1^yOqD7fgQfttR@n%3$zUb3BcqinMWRtwUC{=) zDs}$SG}hT7NJ<;!(g~wP6Q~W7i~&j$pv(C&r!PPf|0*q&Y!WDI1xYrU7X)#(jmn|^ zSY&2P&5 zidM^|sTpR0R9gGRoJ>&PV!J@6wqS}}VVV)0Ez=-1!D`49C)A-egGyo`Qr_lFe+5X^ z0ADGT=M@fuSKp@&&${7>6=p`vFeYkAYmWVI!hCzQq>Gg z&1qxL^R=>7sRH>?`7yGHe?Z@yhiP3+o^+YFcLe_PKyN&pTC&M5=vZ=%0=$k~qQT91k+o}uf4H!pEw&wcX@^s9 z6w-CnSK2w)(Ty_LK6)wbL#>TU{ZQZaN(ZK)MFXFQQLNXj;<8zjkxNw(!<;u+Pgf~D zM6a~YIghEf6!`nqUg$|tXH!s3nsrvCA)mxoa&gyTiBkMOs*)XQBzz@1 zO9`#T1yQ7WD;ae-nE;F2LDRxoyFgY{~c2|*9#_#9BWNa(4xz9!YU>oZ5f57S56<6{yO3oLr}qq~YGq{NcoGWZ zVm!%)@M!t5S)&JCZ!e$2kaSSi)a(VV_Ij7-s|d0rf2#_yH1UR(4!-uFgtUedsJtA} z6%#CTsmu~^`8Q?+3?KbiiFju^Pg2or#$W&t*(UJvZdBUc>|v~n2uls$%k<9rvdCZ0 zi`{jbFj%J%24-{WZ9!35Q6Ye8i7;h~1VR21zMg84@X2z5prke%k*brqQ5o1z zgrHEi8e+G_LokX1N>YtfV5e_0X4X!a)?Z`(d3s8wUqM?wLo`ov9S8d2^(mnW@ z0aAge&b~6#OB&C%+E*KNkh&NrwSTWOam6*9O&8`T!KDm9NA3h6qK8(q96+?N}Q)3rUv zrzWWF@51acms`U|{}F88Hd+NA%3K@`j}k|OLlM{ePpWl*7cQLiPU_t|iJz{k*0T!X zf1@x{pTlH6dp85Ho;#0XVK}Dn=W566eJxlcv1EWlf$Mf*g2V z9V<>9F(U3NuVshf4u7wj%mX9`w5MF7OS=#qxzN8m59PLTj$?$=-dVui)U9e|e`5e$ zleTsvVyGrQQ*}kqmoa`#(15O5zJT7vf6Ud&;3zZNn<2Q884(A7>X8u*1(l9Aje?4T zUBgXz6$GJJ4 z^W=M9{Fpnkx%!Ci9RDA4PxRBe_0uQcXV;piNYB7pDFm^g6dlWPBSIyjk`=cRf0M`D zDo8HbE-81nifgkS^<(+9?IMDs4^w2FC!ywuP|hXoy=2=^!Ttq`PD2JZk`+Q@0B8o8iOZvsB7`&B#=jn4Zmz*o)O47?7Sd1N%>?3F} zj$5Brv47l9;MhNvs>77wLa4exe}iRs%yhg!DG=!sL}jkB`b*L{3h!5~01=hFh!h~W zIM=)LM?a2(adnG4lp6?JqDw1YB`qXISV|O|R>RSRk-3?&MXOmj#0^!83!`QcBw#$D zR!NE&v#lgW4222gY;HQ-;qQebpNWG9CbKvwh-=tNSk+)#IK_Y{X;hgke^GKov0#oY zWq{K0AjSgC@u2u+R7{95H>sGgl`j;BWHp!1s+iyMZ9_+qd;0Pr-XmIjM8zzp5bM;2 zUEb;w5EGiSQc)!f(yd_0FwJ^D7)Z`~SJ1fNDoSl(%xGCz(Lk!K14*^K&0$joYKz6G z4OABkZBwms18=O6dL5vsC0ZC>l^na+WS@I)Ky(s^(f=-9;)ZigR_76=SZl z)xB{HFP5dO;~-3#J(4^eMPob41xW@*^fT*dp7_E5cBVf2p|Pm@GMY1aJXQBPK_t)g z=2F`C#{60pOlK2+%I|^f`ExXno#-i~ngAlPtE9qI7NW~3epxIff2?{J$}J#qJ}qzRd?iS_XEm#Cq1y~dgUdTrgYT6Kt@@+ z+F5X;OrHj&4#bJjf2x7V`T`f#D$unMVN}`O;AAu^4P{P1>qbMFv&q0EQS5`+N}?32 zpfD;HHBz?n6;XDJ6;a;GiYU8{Dxwto+z=N=F`nrb!)RkEo}z9u+MC4Y1hxwwrPDwb<+`1RUl;T-sh z%+yW2FTN9ne?Ip;@N=PRbKLrq=;^?@z7DUcW{GU7pk6;Q%I6`w&#~Ldc+PXWzjDa2 zAG0qGoI_p$CG~k^S`eNEqx&L;{+7Kvn#_~n(WjhAGhZ;D$&`)GgcBt($YS3)VrCEH z>oqE`3|v7F4cMkecj3_da`^G&`0(oF{Osn_@aN%ge~S}S#uUdg1T?S+pn%N~_Yc#;F zbx9h}M`@DlkXX>-wS5Cx)t<4?Ml>wC_rklG$MZCc$>WF03M|^LR7->Ge?w*EnLP)n zT(^qmf5}9apSjY^i?>NOmzlAWRk(8YjF*NYsp}@&k*xd$zDI(z<~ppQU@mV{NfXiC z%3QgoORoz~M3booY?+y5oUEs+uqX1w^Nc+u6eZ$=h)%4$CX$8biZDR)b&+;a=?rjE zKS{|1qq%GhBoCOA;ZD7j38bV~wzSFQ3r=oRf1Tx3o4Mw)FO}1*jSy2*c&XRk;4m?g z9DJBeu_UFbZ!Y!HHRqYDzI4fXI4McZd5vUcGl)ErGQ3=D29!sV)y#hYfy-0WiLnww zbVSTmVLCh_=CUx>sWt)7<7mRm$O;&J!NdSG?t~K9%qI-O)FUau`*f)|b=9FfWXT!+ ze=5dV1b1ATirw{!d{TqFUsWv{q3{dv-(px_yia9|nv2wQZ4sDD)pQvTeoAi4se zQS~G`#Tr$L%{<&FE2`Ql(x}@*W(FH|JSIv&FZ;WJ7$+iPo1uHI*RG1EKXH-2%RvJ_N~Q$W;^2z}kbys%>VT5*vB*>-Lw%r( z^Ti#$0Q|_PqPj()>~Bq!5%!TSe_%#qr(h2=x~Puw0^WnV9~!#p36X(o#uIg`6U<9KBBl15C~d~Q{g~fz*S;~ z57{P5?19HOlIj`|Vg>;LIh67yV8#WlfDz63pl%t_j0##IBbsqQ07hI1e?Fv<)LaQf zq><5^m+6Ekkw&&I)uBO2Qlc>%b>ZtAE`o11rMcCB7}3@U9ayAU)2STGlHx`1wk{pd znz2UR@~jz4R5#(wCo1^ks??G!&UD3+_)*~h_2Qty6Kx9OqAl2jLW zvY|;BMO6LOaYWG!iY#+Q3MT<~w0((%G3t%#L2KQL;FeLiamx^mte+JgjR9^Wg{IJm z$EXoAP-?KPzv|qX&~cHSy$Z;RY?FxEjF~|mU7rv$o&(f%4PDJef3H{pW^n5}yr4^x`(@oi z{5oSKwt!Q1L6fdKf9JxB6F(M+U2Z2jjEG2efD)f0nnnYWO=NjsOT-e5`jV2_jMJzU zK~+)jOeO`1)Z|36$PCI@kt{OfFF>+r5#k>5)u8J`Yldck`_M`sOhy%z1Zp6(iH@!r zyV3bwyMf3BdIrHHG`DcuL=eH`HLSYbCWZ*6t%2Yzog+XLe-TVg6G=>XfRGZFXw)Va zu+t)z2qvtde65HkYMZn^ng}MaVI%S!^Frc@V2@ryo0y1u%`lFxxz~){sGoG^EfRc^ zeW#;}8MA<*ieO?JO5)16V&=66#TCJ1HW12GOoWucM58t^ZHa9NGoAxvL*U|zV1g*D zTX2LCOx4Sof4641M&}We2Iei<&D0FosJ)qfh~lXy<5@mW3r+p6spwqx82C>?cu#a8 zHDfeZbRjikFF@xN4POP*)X;oI09e7KG?1uN=M*VPiAF_=%chgH;Q@->ZFctXD1cAw zHcE{ED7E!z8usU1fA%*9z~oLyn{V4l@McDkPJ%=MfBydN#@5b8f2T!&-%1!+nFvYf zcAGL0o$QrSD4Ba#s+C#n)nOca&vli9TSfcLgmf6tFRih~Y``tE(MGFi5n4i8Z~@d| z%?oo(zml|yk{8;$4yk*=Cv>)mgi+PKfc25BHg>QL+u+Mqz+{N+q^fiQk+ekf#no?U zioX!6ekJ=-yzlYGOEEhx zuLwyqLjz!>y7IAJSGP+Q?=ku*W&D}OZv&2DdO?QZn9+r;@R2+ExiJ5m-$0$8Zpf7l;6 zCd5`H8VV9G)6;7LgvC+QKrB{(V7WG-E2m>FyHL-FHK9NN@H5Z-ji0zF*j@h>1%D?7vQV{enNedGBnXah zcYj3E1n-7gPg$W&FIDHLe@4wBt7*KV?Nx#;Gi4z#_3mArV@g$e3lTf2p^Uo=sMf6I zr5(fG5D9L(LhW)JuKyM|8tAGnKo=rF;&3$?q|eUOXFoJf#1(25&E_2R!>$zykCBts z-<&7LR8AtSIcLnwx$3JHj&z6sw_USPqnTl&Wh*idZZF!e)>{_Fe}aViGmB9}DS`j? zyL0cSk}&xssk#4QD1+Yra~HqRe_D`6MMtCB-2AnmrpLb&Vb$xk!-@aZ`Kup2T(7-a z7oW-6;9Rfm?Y`OG+uPdB-V^o!d&6Tt^~`?go&QxVH_w;iAEJ>*W^ie32g%Z03(Akt zJP*fy%qBLTb0~7F2Aa&J}XVv7c*VwaKnxQFzjhc*Av(bA$ z4mr5@uX7V0?e7nE2fI6aOMG-If9!eQ5hEG34J{*W6OwCGSFIUoeF1hh@Dz`ajKa`K zX5Ppb-}#h$*0|?{na_?Mym%6&Y~9Z%!J{9Izm4>dcf)UHC~sSS zn=-=KLJ*Q^)UwU^EQet4RAAwIz1bP**n14d&d0#WKK-rj{$Ovg#6FW?%zvyS<}qq^ zT4D8uklc1ky1+y)C7p1c=jxg2B);=P=j1l_9)hWnvj%VW8Ik=Z&IPc3 zMMg#b-AX4jg1jL|8Ipg@EJednW)yi9sE5e!NCFYZjMow(ju{FXwJtgp48Hk=e1rmq>e?D^GSx?G0MWFiTz~H8#TSIV8 zk9z5~<1SVujq}u!Egc3_Np;3RK1B6WJ}bQ(MAIfgi6f@m4keBY!BQZCa3dlRK|1Bc zb5if#N&M7NSpWha^WZy^AW3=64Vi%Ry;k)QVxXo+0m+NG9x|5S(-hGJ^35Rg`VtNNB^cFw|H;wpCzOqPj+(JPmYqeNIu{Q{7PBaumf;N@bFpL$G9>r>Y1=Llk z-`}plU~TV0F<9&eWAEPI{4-PThhuM+`bzD;e+ULkQDbGxJuqIr6#xr0QgZ+nPf;V9 zZX*oVpS*Ta#7siE2wuZN=uA#GdW^>8%7z3VT8*F$yg zUOiq9Svq>fcs)dx)#~tiAhZ^dMG2ABHU|f8G>}W>wex4Gr#9~5zz@fhXXlaeCKJZo zpP@?7%0pgVH3>-=$n#=xX5dDHNL~rUe_Oi6Sp2Aa{A#uZrJ+?}YTR_8UJzTU*^|r5 zle3?1KAa3c9^dE^KOfFNogQ8-YR<|flG#>?^PdU(9sXp@>#t0MBw@ej2TM&!m!E(C#1%~BagEcR?aFdk%XYZK1PaCS`7oLuUAQoPiRpgaW_VK5{!w^ssvHBEbXgIz>UljAXptU5-aG7p=Gte+1ncg--Ow56a zBSV41B`v04^*l}?D`iRJ(;53IJB|sFRwt?dhZ_+ps^8_@0z^aOg|k$*OPkYsmv;*E zuGjc6xn6sf*C^{w`9oT&=RT+(e|;aAkL*>ZT&RE?+2Z@<2^J)C?&F2$R8wt-;H;dg z5Z0V_kW?o^P?@18?I)upc%C((t=Pe|gF~{8D)pG}v`A=snL#dfFf>7tK8BhqV*3k) zY7qp91E#5=G{DUG6)UF+f(l1i6V`<#W=5}A3FNh|q>c51<|;M{9fLQ^e@V!ynkL*8 za;R#=CRA1)3fWQ}ti*+S8g`hKr@qujxHbF8)J>9= zbX69uHe-V@jRXg%v`G$%Q{F3Qo>W(PMN$ke>P=+Gf{`ngMx;gtM)P=N)5l1HWXp(f5MDpsnyRV)x4lGLxaC^A+0OHfE$cpE$Hb5X%dWHM;9{A zjkoR1N;{*n2t}t|MKgxRN^L<`E~w-tH>Xa)y@(Lz<`Rw|i(A0FN_PSf;tNU|#-PrK zG9tc2G2~Y@m@fniHfVY)q)bWm=Om5J9)NKl)EFSB`G{MXR^=mbe?vjVJDD*6uJ)KW z286<23Q~FU#AshuB+E4`3&D3ps8GiyN@j%oERnTfE**($0fIvbfh*;{cHX5AarBfp zMz96H?C?^lzVpQY^1^3Pa)U#gnSk^Hp7`|`L=!KS?I>j<&HSnpEg`7zB&op#u0N>^ zE@fV&(J5yuj%Vz>e{!sAOJsqW%U0Sk#N|jr&e0^d?GsTD0a`*4pW7<3T}paUc5^t8 zx}EGsZZ3>Gsgy$;}LLA9oAvL3KGdm&)w+at-o-nC#+G z!KHvWMMgoO^BwL)P1&9;vc4{oR$Xzm6*hIilZWI5ip=iXf5X&SCt{~PObVu`HZK-J zbuAGKAl%Gko4ki9KLpuiK`*Km5|Uty9Z$7um|hi9=ZHGI!t%4^{i)6Y_8#zqTnQ!9q?cUmJe`@iPkk4VBzI^h z_P1WZyzg&e?0YG?#7aoHHO$977Ug&3UXrcL>O!pje=U6JG0xDY2ul|hV}Gkzt+6`h zrlPK0{ZEW6Ed;GPwi)|dFW|@NZ#6@}{7_sOC1Z;*z5=__S&;p$rVyDr9h;v~hel+7 z>jiEHeRGzo-N&l%*?FlW1hO&IyIgOq$N*HUXHI8@IJ`}DN5p)V+}$c^z2NN5Idtjf zVpKZye=$zwOwo}}=};*{p7Qn5G9c!E@eY#NM@L@h+={?X`oM%DO+2)3POb&@Zpzi@ z%e+ME#oNnz&L~(n@Z)-JPuGh}L$_~G&llP0U7a(l4{A@)bYh^2Bs}4=SdnBWUyM(xN1ZXa-4Kki;lko0TO&7J&v+e?v1K+?u5<(tt#;c0%JX5D*iz#?gv* ztz{y8>w*o)ASXrIKQu2KNE6%+r5O)i64nC8K~^(BSdE}OalZW3S>j0I5U{^$TnKVZ zxNu#{0KGs$zZe%71tL^}*~aRS`OGE{E}2$$;-o6Iv1*ZtC_cj1fbJ9`FX^>epW+mj zb3WC_^nWIiol@j=o$RFIDriG8K#^t`?#8{0+~>R0D;*s&Sd+QZNPTWr)=gJkGl|c% zxg<#?S(Voio-Nf8Z;?D5iJwuV5b6M5Q@fhHXc*WeIgSK+5t(bi0eXLo~+%WSj`u?p&&L{_0><8cc_^50x^1ET); zYJUkcG22C|#lUF@s)c~-2ciMtvb*UNK{2a0d(iOHJlK>W&Lb}#zepAQd0^{ewY9%7 z7_^8q!JA6)k=n$V>MEZfMbnuV+e>}#^F9fZ4<)ra3sKi2JS zoA{8Gf@I`}ybT^ZB+Czb2Lxg50mKW!V4|M5kwn}{$7i? z51g7my^p>UtqYSf zvs}6PFmyhj@L2XN3fV(up?Rq@4w4z;fP`HFBnnc6=)6)IytO+Of>sb%#@?9g$M|soXPHE9J7z zJR4kCFkJE2>Nw-bZPir-Hxv|xS=&%8b7N!1ybL7XoiJbGre}0N$#+k`{ z^x$|2+l5Iq5-0b1ja~KmwlG;LTz|R=e-iubf|2;~BfH#ZKg@p7pP3r?@LNsaIq-bo zWf`199zo!)2>%~*KOFh%Trl|)f66|UNEeUu=*59|%P!;`te0?fVi=_ypve2_rIDPx zo(<6yz!_byohW82?PP!#=P8&>ICbLM8#=eoYIU9QT*mC?VH!*=MaOWI!hgFF5)Fu` z%l3|GbSWT4p7RjN zb9?)(YDMl}J@}4z>ag|Bw_p`N;k=PUZhG?5MDwPo?uHw&l{&x;1y%=AMM^cGs+-Ix zZ8K0AecPmWnZ|7slroip=6{Ng=)#IEgU_!8OytGmx|<4y2&jOjoH)30j+(f*DAv^G z#Zds2l$5guH@z;*Iv7*U87j0W=Zr3UP@Ft<;|Zu}qg(=9o6B%- zkSMpUb`I6u5Kv}2sDJ8t79JnF2`|(9HSHC*#`(#)UUS+1)-^($c5sDs{^9~HBTTut zmy2FoNZYkG_%4&ytSg1CoU=@4x$HGn2Bo=zI=sHLfmCCGX)<~-x%tAdF;G}2)J?YK z_yqn1MctIUHrHOa=l|-Ln?!Nyk9&*IE%zC*FN5&DmwNZkhJW(J^IWb4@P%lXk$|i` z-FHzu^hOT_8fB4jw$4Wn!DJl!AzNx*3zTC%gbmy)&Vma1VXod@ZI00xT;?k5^~vm| zUP0%#+~e(!iz=nd`rQqa@C6{NOtl*%!|5!2?$v{_!1Oh+?KAbG$g?tGc@DLF2&TMY z3HKVH&I${&qknJ#pu+67v1~>N2!ym#&YR!O=gs$vdGiC2Howz1;+C>t(&l5}KW!d+ z@t3OypBJA^c;uxcxRQJ8jlSH+(VX2oY@yaIUSt61`vvmA#@*MA#prA*lPErL#y-2H z`n@0fWBzB|8EpNh-HhDZ=mS0RP%Cnos2{iY_@Dn`*MCXpbFu*Qj{Q4tK1tn&bUJbP z4%G%IC~;3##)j`#+gm$)B*qowh#J=nyeTb=Dx#jmXr2h%j~59(<44He^N?)NNQgYuf{| zvjzt8*v{HVE`Z1m8W^$D;Xwm~cse;~ASeydL4RupqQMOXkzTIaQGY^rmqD9vN~IAV zGmNpeGL;4b+Ys>?2vb8e6hx-Esdu|E;{jA6E(617_!iH+@i++YnI$a#PzeqYoQ7&c zS9j$!BW5Z$RD2~h^@bPw9@!3Ktgq4zZ&B?qMwU&3kgWq(&Ifb^U?kbp`$|p#2sT5+ z<9{H04AD?fp*8V0xNnh)sm&0WN>5+H^rCX>5qS{IAeagQRF>RE5QgkgA_{JK+k zkKfkmd?;Xu3FiUjKA}43W)Mjg|4Etm6pYgcX%+U#Y$7vs|2Sz%A=n=S&ATweQfG4sJuwY49e&eaN$$51bME zn;puDe@C@J;P&*Lxb@9F=erRD=HBp~hyin__i8b4a2Ji{9Dk#p#nF?vuO0})aID`x zNc@RE;#KyjU?dnzaoI?cXO@vBAAeBs1Vn~X@kHAq5s0B6lF&_NlOPp7+XME=;GgUr zZ{p-0Z;XS-fH2?+ZqiNxYePZBz^&Yu4CcJ)RQdIfZ^rx&6|oR8TEnzZ=NG6$JJC=O znVI9xI<5qdi*h!~y^p=JorWUCxN47`Q8WF`P#=IxgS@4cBr7r+H~|L!o14(sPlg=GZw z@unIJ6i3e3Twl6;k;YDQ(tj!%b;F~l+oNrN`;JJ^R2`J+aK0X zZMU$IX(Kp&aG_URumZORprj14jItG`l!5XpT)wY2x551l@z$c#%2txo1uj}zP7QcF z`$}~c0cBtqxcKtfIMeKPgf-?W?$u4roEd^&~)mo_ak z{I-qZaS|3>>a<&i2Y)4OP%%6xGlOa@P(U_GnSEXt$6%wrVf+Oh7+mgYk6)7N)=Px0T;6AgUg#5t}SJ{`jm8m5qdeg(rA`l zWNKtFhLmOQ8Ya1)}@=u0!SiS=jdX1 zvwbyZ_*kHDMClMhJV+QCP$_AP9lo8gbLspb`>c627<3Fht1OuUO1dB#3zT4ySFgmb zLU4-33Pl_^@qePr3PIqki$Zk$jm@IO85yX&i&^a7Wf|hzTZB}sFy*4Z!kmjfEa_r# z@PL;-BoXcM&2Tm@?w*gz!LVQX20L_Qq4F?FVJkXUGbj^->QsP|EvUu<#WpHV1+i)Z zrCxNc20%#}WIMe=`3FjvaPQ+_Oj_Ni4@#bR8IcD{wts+$JW8@~$rfFSJWyf<)j4{UM5lt%9tSA>J>(6 zL5UBGt$(IH#sg5sgUJE^hOP=KC=p_{Ub_J(VWMO4Hb7-ebWlcr&@xE^IoRq-hYny# z5=w9Scc~~b$ou)wRrzk2Bq3rGWc$3rfW)9(iUe*fP>RH6Wgk)OXdprM+Bx;pIC7Ho zdEz@4^W?#KKTp#rq@n^Ox?Ven;xh-%g+FH09DmRMG54Kc0zZg7DndZw>$UTcrn7_1 z%~|l(pN!{UeD{f6`)9GAB)nbSCL4FK+27h6Y;XR3%2#gVDG0~WQ?jwAD}N>%QMmDU z@6oGn(Ssx%bcMBa1VRo6GWTu;m(aBtz!-ara+uCwApW9~J*e&#r6dx6!2gg@g1X2S zTz^w^G@!h83$36lKTxH@4p3PaUDvuD;Co`2;L_{PpZv+Ap9Uju-8qZ{Z?f(rUYKko z?BY_LfQB?3@y#>Hd*uw8cFXv2yvP5LkYv`TB0eK!UxY`igmb>2`cr|bHWF*8kt5T>kWl! zz@f+x7tjMIi6#LP5s81#3v4DmPF9`U7EBj75yVi%jO%?eIvP~c(^g1d{-LCXpnp^z ze6aSl^5A2EY7}T?6ePUVr$IgGcgTbWs&hxqlS-9VIB1#wL9Cf@JvzE-rngF`BPbVy zXe?0bM~UUhI31Pcv8sBu15}R^2XQ2s_?gRkdXTid?# zS{-_U9mt;1M>BDKH9F^mmA1-Vp??pS=V9anfg5qvr|9;*X%}52Oo1bPfPgjxMQauz$)VkHHF) zJO;2Nk9r<>O^l&KC4uB+;2xa}L}hzO8l?9xNWDogq9Oy8-O+*kLp99kN(fUl!hjF9 zLhl~16~-uzc%NA-E*VuFVSwv}vC0lD15lC&QPs}@D9eLtEQnOgZ?>C0u%D%Be=-2& zZoEiZ$pDn;VSzPllMzB-?tj4tYj5ts$AV?<=9n)CN3qWXSR3-fyY3X;9{a_&$=DQ> z71FZK50WB`utauJfD_S9EFuSMB^Hrmp~d2YGrc&Do+=qryi3QI81b1rcr%}4LdE1Z{2|xf(8?M44|c{In2>PB8+(#F>UaZ81VKm`K3MyZFnBCb9txyE z1M0%I-Lf+Wef#ZgSaOOHE=AR2Z5x!ALUcdh24#{^jRlc*KaQg5)CJgK|cQ#sZ~QX}+n}rxlVGQ-(z}gHFX^aC?{>?q65L?zvPzI+LFDR>Y=1>lKNb>w-T86m$4L}^ z43d=Ftds1?um0`KyC>^|y^U%N;@{o*qx8TD!jKX3;EkiF-n}@0gBFs@hC6PSbd$R*)*Ct<3V`HS?qZr#7W5n&Wkqx50x?Z(eR`Y^wRXYa~(p3dg$(SsK< z?a$ws$4+$Tqz}Hsmaw{5#^B9He+%5hWgCJRI?%ya_vJW1myc z=A5h@{C}-Dd&uew9PsGB*%;0v8<+i7@nn3x)_1qA*Bn1&L$H&gpMJjju(5Z&_TLge zOk=mM4lfE(SZYONcMpeG54!v6-un@+G4$-72R9!VK#mBwjp-zJIKz@xvr~;Q8fpx!J#7voG|3-6?lB z27kN2*~2{La{l_rI(#AA2WDM8X=)EY{(AV=%R1U{N)1+&&e7D3%JP_$7O1OSQ?sNU zoWgoto}Uh{PELnx$((5r{>r`TnSsLX6W$Z3_;iOq-UOX~=%k>RGC8HqZdVxUL6XF9 zk>hxi;6CKw5WPr8!?Ua5r<;$%4_9(w|9>PhpB5{-!yaokcIA9d!m*#7x~*Ck#;q{) z?xv@u?r)?E3%$B6sF22>lSVVWE_~hM{8I7)8!x@IjoLz;T^ubGocSyR{xR=Wb5-0R| zS%NfXmtRKO*xA@1r5moe@^njElW+fsi+gXuqn|H_Hy59VA8syB{$~h2;ZSP9z0>oj zyp#Qgs-qko;>eH^0aqWEV;g!?Zhwn%e$$Vxum9sNh?5j_o@=*Q$jkXA28-mKfE@$LQ&|;4-MDL*J!~iyKE1KdE0M>GSOaTMC)O)4vAnBu3$%gRq)N z!}h2C#J`WdY4u(wQ;+?vce}(VxgUqk5y;!-Fn8@P7$%sc^D+D2rRZzdaDSHN-$A>b za3xkbNq_1ElZKPiKTCR!%`tgbZFY3BEiS7fY zfcf92Ug+KX@fG`|%RgC+F@Nx1&_24rtobh-^CO6G6%no=qNZu~04Ous#tz^kL4=d? z{qfeJ!N`f?d-w12FktIDp9QHOyWT8t50ivv^e}VL^~9IMf6Uo<)$74EHW+XOF~5sc z8urFLWnZ#=OWf1p<>lee!<&<{Uk*Q>9N%0FKV6=m-5j4>UVJ?K>woZ=y>UGJtr}1$ zoNUnB7exLvp#AgNU(U{dJ-azNKRrD>J0>C)BCP6(Rfy=sJ<`zVB>kKQ6L)xec=GY) zczAhqb9nmKx<=PP2@er(EoeSFJRMS#Y_#l+)=vwTyFsoH}a0 zW=re6e;396&>LB1zt3A355V0f+mgg(9uYAhFTa%-#vfPybaotA>iObGY88$~NeYms zUdv6JGCCZOl|CXmA|O{hgfd0eCjp_i;=cRfC_czN4b(;ui zQ7#KA*8xJBn@IZPd*kzP@_Zmv5=EJiA0q@9iJR(^Ik zJu(5zm8L1x8Z}k`NgBnBjod#oVsd+TDIZgj*H{bW$$!f>l9;&0T0j%0=&3!BIIwmqnXa*b&7@VZp#&W#nN0LQpNCYRq zr1O*nF&fNfSO3@nFz_3Cp>S*^@Pw~*YhJI5UN3{^C5BL zwSO(L2)CQTO{U&)8<|Gufx1SOWwHO&AI($$CI}zBNuWKCAEJ2br8lVvEEQcrR=K^4 zDMbQmJheD!aS+}+MKU$NGI0=$?jEMm(?9&Dk!Pz7i(65QW|6VD(qa|qU3V%V090lV zxXYEbkOpGBw*Ga*P*AxHI8o48D5#rN)qjZ^X;&}*mhr+cj-yx|sj?fG?ofgITjdTF zlkI-$FP$m**x9c=PT=LlK-%STT3VIA`(c@mS6;5(By-`#V8=+FFK6K!v0gIZun2J1tlYVpEJ9NHROO;nu9E#Xzki;8 zs>XofRut4$%Xq>r)e7clUN2CqPuk_@qa*g^y1dBOo-8QgQ0Y#jxIk^Xh=zhnWc$g& z;p)Kd55vh)R=z|PokZDDYNESPS1(YHE+hAT@Pf%a_LtrurJW?D1V!XVkqD zmTr&6)d_0+RleruFIw)0laIrj^M8xWo8hNV=bvsqoPRn!yjnN7tlfJ*Rlw5TE6e2< zIRU5^s62+q@mkek!{Iie0^E8Ganl2L`KmpJhvPQK5J@%01A;$>`7lK{#}L$N40a5e zJ$ZU^dC5pMp2+-Mx;c@cR%V1g5>N*-qM^uqBuvWy{W74&WaSgdHui(4D1YmZ7p1Un zrks*z@ufVGpTlH645Q*-* z9-_Rk@c-E-?}B(LGvI0NQGcL@X^O55CyW*m>BRA3U*7LRm2-C+*Cf2*NCUf0IB9&X z?tFjD%N06PDff9*0G}sMIcenl>mAQlWAxAb5j$~8HGJ!abg*YdlOC|AF~traqG(vi?C3F3pJlWJmJ>-vnMe?-Jj4el*!3J!xF5JAX$~wCQgJ;jf4& z1)KcUbw!aU8w-RHI?Q<4&z$PB`Qp;A9+voaooKl*9(Debpn(F*Wlo;53B2wUz3)`M zpFXHXoTj*dl6GXhaqa$*8dX{Nz5Ke@DN#7Bco&e&_w1E-T+uEJ043c(?ZY> zsYDwFC>XvH?RY z#xPSu+#g<8jDc%k)`&68>VTa_l@@mwf($bQywAug$jY;7B+4-KlemTu1A=l{sm7vk z4&kIHysRWll<~Lx7dOV>H78$OiovT=k{M&*f|AuzthhoY8MdfxHu`VI4D1(<6GwQS zz1xYZij@h7#ebchYC&-YD4hl(7fBE%7HsfxRHjJC3`TY-&*8#*uhzu}GXS;qijGRP z?4xQ~0(8eR3oQAXO8y?Q$|fXQ1fG@MZ`~OYGZv8+!3_DG#u)nWx{cZ$UUF?`y!kDs z%(`%N_d%Jj1yZFN6|##XN?$zo&qQQsj6un?MP;ml{}8pi6#F+uD#-LPI9<1`^B=j!?Xjr1gVio+ z7lpI!gR^#RW&*Bk7C0A|iBpdBk@87Xs|Sm|MHc;o%KBP;TLs9>*O2fVcp;H%h)N(9 zMG|;3CGmy23|Hp^XA}8cP7J21b_hxgrrLT8f`4^$(>V$M&bF+8VRfDYwr)&B8nWG$ zOHP0&_>n2_f%Ej>hs^wbWV}GNbeNuOLL2 z?|(ixZCDISRz9{(@-TKR49*BsyMl_oCMgRI%4SrnNisc&%s^gg0S)X_+9X3@$HK^U znradXV`czd#lbzBx^^8Fv>dxZuwOLh_XFwA;6^Spj2J6vPc#+PMgeYb z|CBkBym7g##i9~$Ay?S>$tg58VBaqltbebZ5U$$3IqTWd>uK@&$tiY>U=J!<1F(0x z>37gKr$ax@|LKSKck_yShsbfsEAHp#|D_p-j1uz2ZvK(S}h&Mkn>+K!O1;;K(I*GSFKGl|=|j#ct~V{C{2l z?xU!>(G=Uh?4X*POfl(%>oTPaa&MOVeY`-osjND94MYlD0lc*f89LJcU)xRrsl1Bk zma4}n8fn@~soL#Fli>0>OuerzZ}NKb+l^4aR_@vb?>S9xsVYjjHA6(G(L^;X{O0s> zYlWzv5oI^2Dsqcv7ZKr&CM^Ws%K{)omx+nZ^TP@J7 zK0NB)xHSk-vlYY|w(J}NYR`eAsAc1jQ+r<(oFUq>RfuZMapp~Zem(G**?<2R|M@A3 z$H@gBcf`mdI`|;qJw+E0-VX^%Q{yfonRXho-!5r7_LET@%+e^XZ9svtvOqw4B6flZ z=h_@E@MxfW_G?FTrt{!W7#AoHW8&OJvBUR)`|~o1L_`|MKU|md1Rf3D_oH;Du1j44 z69N&oL_;CVQ5M>9C?~G0LVqgUv)r?p)lxm2K0EJyzowKb`~-rK<#1ZxpTA$w`aZgK zjvk_jj##6dwYkM>sm>hUg;nmWmxXfNEys*-r=h&C<^%Pjqa0bfxSC+;#xJb1H+_ER zfAyxbiO&r$Iz|Dv6oC<4SmN90wi}|2I-@d1QcJpsg|Hj&((I(%rH^#V~2MD*V5noSgHKeOFZ6M4|xYb{dm~F?96C==~rP#fBGU7woOfoxxit&&&tZSxG zy(gw=5S|}0C0hlbFwd&^>1=w-8jp(W$W*gwp4GbtnZ&&lzYkzo$>Ufh$^dwSdoRI$v(VUGYK@+CYGcTymdewQo_HJL?@)uKoXP$NHPkd&> zPb+7RWGsSPwVv}rH`VARadrLS*^@3AKILhUB>Yzur=C1dZ=(s(78`AdHd}0v>L7_O zChSjV=`;KF;(s^hwwOkwn{ztaOg0mSb`f~J_AtM_eSTfw+95UuCHVMm(9(<$nFooQFw4N2!!l2-aFv* z;wopTokii0bM!^*dsCjh2mkn=h-GDzmb3E4f~37GY!rYk@1of?^ZgPjPjuaKvCT-P8D) zsyi~c37~%2nt7;w&5C5@Hr8Gu3%*X^27>x!tddn^Cp8NTiMTFqm}JFD64h~lEg|Yy zqkozKese}#v^l*pbl4fyRpUl5A?EfY4uB{#!A;dH8%Z=17y10EyEw0hrORq257B%w z77nC4X8gI=YwMhT>w+T4$5cSE8bpXOi5hQ%nWlZ?ZSYV~xlC4&4cuo>0$rKW75L%E zcb;Nz#=)+lzNj#3%ylo13i__3<8&EJB7ZXh)Wc8BMOHoXzA(eZ)4t@2LaEi5UDQg0 z+y0Ri4Fk9Rqcma~bPPl6Ft##Emv#%hMc|U{U{uC=H$>r$ax*R}Z4GY}=u|X_&lsV= z0u`nPqK-FW6WS{S+?usg2DqUplmSZpz#H;?FSl_-H$Hxc^)!uTldeH&ZzP>?>3^^8 z+Dlfau6Fjus(Tl_ z46#4;*jw{(^x%c})xlnz^nmyFBl9f4y8A)2vMx>1Tq~2QLUJFeSIx45E-x zI*vFUw~}O0#5_$F)n=)(y%3EB*(+b{O7D06SnT33QU%vUX431frmCs=9Dv-1+sNOnci-oC#razKi*^SG)Gn4X58XJap2 z*jGXcebXi9Gdo5YFideJ57CoU23%t)BStkjE11Qp7qgudWfHy#4A+A#jDx9`faro~ zo>bmcvw1sEL{ao4L2hz0q<@wyhRn86o~}c=M?GmpO{M)L9_6>tW;!7k3KRZVl%4A3 zh~XmQfBZOl?3QlCwhXM*GsR=a%KA zTQZE&$m0qB_PdkJCPB)fD0)V!{sbdc090PNcWiwAr7J$#wn}YTM>NZd4soD zWG}hmb0J#|i_R@KYnhLpEc4@fiTHdr|G#bh{;Eb7Vy4up^*VAay!%br4E=S2vpv|@ z+JjO`5^=#SP1}$QGdIDF03lkVsp<2({@t9ftEyXa<783Za=TdG@{KHSx%IYTdCMGN zm6zlAe#=|#fcdd4B!3n@(o2@Ngrl!JD{uLMkM?5qEmvQIlcus|R_mu+S(X^bjwzDX zlv+9p66gz7FyQwIJN&P$yy@Oi9hwq^p1| z73p}rha!FHvQ2fP!fV2cvU$ujVz-WoAkI(Rle6RDZ#N%KK7UPh6kiUH&d-jCNp7np%Op!qNcd$&J%JX*+=aKgB)CvOZ%YVGXEt&8Ik8$aZ#D+I zKw{d4A`n)2<658iYO;bbXmGN5Wlt%_R3M~UxbprDyWsu}&5L@Lq-tF%BGqjRqYV7! z6>i~Ic94^%ReyzB1T7c=UPX)Q#X?0=-LG7WxwrtsSV`D3SjKBD!m$goufO{PDShzX5xAAA7RzuxM7@i)7xt#eULB;3rE(g!JNfi9KCJ4;_1DfgJ`j)wXCjWKyE$QmBpOsDm ziWhJdOMm_{7RVScz69po=VuC=4;+kQu4rkQk49Vixvxv}P>*}dUW4`A?CsIHJ+L@3 zm#*yOB!i1d@|PKMs@F=s>oOfU_0nEm4W14!FAskn-VBdV^s?Ptem**4kJlZ27t=pj zU=2G04G~Wv&?V3n#h^|N$t;!nqzvzzn(=Q){eOZuR~X1@u^VLKD@m{*x)PEV3@U;RJSR@(>su&2Z7Hmbq zg4L2lQ-8%~i@7jh1?x%(opA4cWJ4DX7m2gFi=*jz=u4bcON5J9_&!jFnv4F~?XStw zB!B9~RcZD}U>UfCVcVL1h=s$5`GRGt0Ba{<8NXk&Ul*%Pw%10{Ue}k~Vsz&xQduFY zwmuV0ywqItkD{;=d8MxQUL@#_gA4u<-dUQ}3Pa2ZS9W)4qiairt&kHiFjC|dtR!%| zxPO7_7ZPncMos;3?_cIpgWaqsMt{Bh{eKHFF-)di)%|OdJ2+k3vdm=wJK1P()xPiW zmIbN+2)Jc|*Q!0h7CaPG_5*HN;4zU2*o9kG7>PSpn=2No*b%%&A6_|{{F7C7P2KGT zt}o%m{Oo3T{cUS`ejQ!7K-B_?m=`10|F|Xqs3suIilWK@{*g=oP`yB+q44R?-+zsE z1=j>5(ypM2e?&t;l?S1A1y|=YY1eMum7qd?noE}xf)!UTYZa=5P*C+hqFurS9SRw= zC!wkE#&@KQ;Z*?b_QkR<(zF28ejZ@p9lB%i@_{6VAdRgDu0WW7HFvG)B_~_+_Mvs~ zQ2#qZ>!6Z@L@WBo3auk1_QwvbgMZ2z60Ou9IJ6G0Y)E96!b%iUjYSw;hY#8&ygr`K zCZZ69JPjqk&z-8pN9Ol|mkG?7F?T_Xk4dl0FvArIB#Oi3mV_EQh$|V`$RsP|?{yKp zf|VAeS}%<6%2?{sB#uo6&hh7qk0(cmSHt=n8d4}jH3|{n30B{aYAom#gMSe61h1S2 z5Xv9A70KX2c`xKYfECswQl{{VdXA`<%70g`#&5BXUJ#~{<2l)O@=xT8(oxaeAoO5@ zDVZ&P{-8p;7UXzW>J?sb?>q7kz>D@_Tm<<|BlilxD)tfSOi)(!_pLL*)%vI|GN24= zsVF;}G*jny8C0b^i4%_I>G|FJXdaH`_w8`P&QDIC?D&JL z;SpYATDzH{ImfWldkwWnX;VA7(10?#sf2T5|B_8OXO37cnRO$1<*_|JxxDyz_}Ag_ zjnK+uavGG^O?kHgWp`7JMbz39Atzv&*!=ZcoRX4F{Pe)SmiZFAIe*E7*Q1SjCza6Q zLXG!$EBrvUL53t7(ctuUo;u0Yn@q}-bzr=MGQ1^SHOcMpA)%69sRckJloe1)xC`sAhUOdJ- z5glC#6W*_Z8EA8+x^+vX*iYwi$bVEhQ;Jk%VdS&XLBZRZ z9fO?|J-{X+XV5h3K@~^*m8p_Tw%EVOwMOt`aprVfiB|){N-CW!SDk$0G;0+koZ1yu zOEsrs*PNl~_V4~E?eq*a?8;NIVWr1(TSbsY4Ic}mCD>Ml>^Cm$k@(eA1mV*TKJZ^u zwM(2}!mS}F%zp$P3nTK`*09m;{Fps<(&w2$83oig6N5+3h;ORyN{yku7#yOg#+2AaCg5& zpTaWJe)kOvp&dxt+Yi8z{;y%-|1~VM()fQ33%{#|g~QXslaF0@ETkryxXYqB#pRFG zX3?l_x|zV`)n`sQ`}gqb^Ce}cMR-BUl{Sh5<9~csreiT(2D@+YMo_E1i^hL8rpVvF zOlBXE)dk9j>8i&Qm`H*`^U$Fn%3-NjkI5#lZQ291iwS~PluZEZ{c5-|8>KeZV>?g? zO>lxrKEB!dn#QEcn*xj7L#bM!#|9~%DI)h!(lA2W zwl_O;8?!od7o7aDv@sRhlX7P;^3}F8i|{Pf2CdGXMP+srHYnukro-()rE^pU3H|Zm z^ck8Un(3sriK5^+QVH&Cs$@J!kiG#P%6}-mt!+4pGF-Lcz;PqaHDXTJsB3uBk^`;% zMS%T7fSxN*I>!rf;_6IpRKvXj5BgIt=+wpoC2-My)A^YF!pqc4=elvyvbUaE_@PozR?Ld+t5Jc6LVp&c z$|+#)zFR&tYJe{JaCMElP|g2V%zIFkQwNcOj@QbAgX@k3y<89?M8TOKs{n|ivOc~) z2qvoCodv;ICa?y|$nU(g@I-UY38)338KcN)mn6GUJmi8xIQ10XQeTzoCV^}|Xw)2a zm!tZ5WcMHAT!hIDoCwemFlVl`+%czH1 zPDN^X;}qDj{{lJb$XOV*+bDh5db{y6GdbqBjgPyc*EAa&T3OP+wGRZI;fp95!OBZB zphqne^!me%2T`U?jU*6`n8Uvcti;i~%gEv#B(Qkq#cUrp563!d=|VhsF@H$0q^G9z zI5?=^x_}9EBs`$lH2KPUB}eC{r-x_9Hy_SFogP~7c-tIM*zXKpjKZ)=DI*I zl`L>VISGg^Ye9R)_=NHi)PE*`gl0luJB{+Jr1|30@bL6KJEv#oXG}_7Tv->pkH{|T zSc7JS|N5tstKsFv;n9$aa-$xlmNS`fyg58RJvpO-u)}ZgB(#&KLBOx=E$BDMcB_~{ zipG^FS<@T{GdWhGYYU1AvI9UaGGoHKrJgPg1q3ty?y|-}K=tm^#($7Y4Ts*)q>WL^ zdNcn050vv}M!o;Ra^B2{_ztXjeA*jy1~hkB>6~(pCc))%n0jBih4$g(Hz{c9yfVPj zHX!tUb5gl$kp*E+0DpLz|I-ie@8)3QQt#g7 z&g^!6Gr`;BakJwlw5dZ0cnWo9i8~IKYPM+D>^S$Zq#0I`c zM1#!W`#Nyv@_nl(PyV`N2wXWoIfd9E`+mu}%$^ki7&IEjjK2qh3oBv}?443{YrQ1t zdPOd`Am5N&+A?z(!x!xvID;$n!96m$V=ITDb3De2Gq&zD%Wa1A znEq`i6LHfGlcHIm^ud|#~wvuQ;J1p>~dPk{;mok{lV0UVRiRj?9>NQ9{ z!+$&BRsVnOeQi_RNV4wt`zsWjFL(wT)PRAxUj}15!&w6k!_4g5Wr7g20Ij=QeI&JQ zcEkVuRF$M|y`)N+r7U&(oh5+y>Ql!ec9PCjOkH!hWT3Z<*6P^OiT0volpItSC4b|+ z>$to9S#x)nez7R%TAt0}@nY^SXuvyUb3oX250Q|&Ym}GjqJ!)y9Tx`2+fhRT=N6!b zdX&SabZMon}2Qimmh^` zX*rW~g0aAykeOzB11pdj7ls^TEnF2hQY}hre=p>k2Hkg5KXea-b_%3j5`S9$VTw|r zK}TFP?-`ew?aXFI84G(W;54%^v>0V(AHvCOK90laMH$-M&LYa8sWMV>I~CG~EGEcp zTl(F>V;D`mWK-V|d8?q&i+|q9zsdjQ0-Cy=Dat5g5i>)RbU#zR#+izvxFqRh-m3v@ zxxX1lK|9(~+OqF36p%@36uP-8XXQAt8FUo>nMv&oSjh^luLY$u`e`6(`UE*}OagO2?h3(%amm5$Jha?l${uMi@Hi%rGoJ%@}2_-3+}=6@Yw?P_X|E(OLdcdSsP z$^d#8VW&49QayG9fSJoBojYKU!BH&H-oCcS`h&{hh{(9;K z-$u}?T5A4nS7rMnK5${YGFD|}o``GGpbzO+Q7zlkE|m2(`q=UvInz;D!(~@B`)lwz zB*ChMQYK%*GJnJ;-b#BPKL$~pRN(KCFZ;tccjKVSYSh+`{bI$VsY4iCO-%0Sadv>w zWlHZ1NpS7_gMOQnZEBCVheNDX9eafna!NxI+*+KRX*k{XC$ogRP52PTPn%xj>a@Hz zdW56Z%yyG-T{OZq2g+qC|6r=KMzLdWD@4~fDf-Myp2fg%^spoOPj>$4efD+~FUn5# z;Ju^RlXlW$wsR(gsd0r2h&k$-IaAsi`NA(kiJ_~{>&XaTWIGw^Jmh~3_aLr0;IE$@=1{{NvK2}7 zFFj)I(T{?5ZDujhVYHeQ23ljOmA&T^8g3B7tti!OGn1ac9cL^G&u#4Cb~Sb;P%)Q$ z)*kL!)0DsNJdcIZVVnV}f`xAeeBKJ~iepT9KMt;6riu4;Q0y1P)GY|^nPYl4X_8nT zSFW|?^re4I@|I60mw6#|;xrdNS7@#U=W(RDwAFm1I*IkCf;NZx8kxbPu)TK|K5J^h zC4AS*>VhTv=4BQhdkK$X%1XdXaB_J^#opaaXQlLIRxN$ijcJOv?%K;b-N+|`_UoXNs%|Z&i#LJ2rGnz!0OhfT8NMqAY|*rBqz0Wk5-FR zbjpOLUj+I43$oGuZSpOxo%R&-7!_MX)_z9Q_mL=We_=Sf0ZuFElrSc?kgkq7%@F2d zy^|P=IVA{2q{o`d8ftO#aN?Q&pa$lVgVc-$hj~A__;ahlDCxBppG)c7wT7@j#4djY zVxt~qYex2sV&c=i-EeO=V3T`!b#r(2_Wb7TE!#fzXLm^*Wr_z%tbn~uqj05bH%;!D zOW4D73SzdY!j!6hT=ihE=;!yDQkI?ybGhLm9F_ zdC}8+BEB0t_rAQ&sr3?HjxnGgihN8IQ6hkF;&9?Sk?@@1L|jSbRnNYELbZ?KSt`?h zFll!x%lim-iZR>AV5hh3gImAY3okl%X(0^7#??U>)10cqq?r;yFt(7_RqlVH&N`>T zgrb`>kuaig8}LEkNw0+o_#0ro?<6_RR7L@N4*|@%R+G}p+9N_=M(2d%-rX* z352lWlP`pf9LekDc$xkR@#SRZV{ruxrj9RZ^>{>e;Z`kO%~b_lrf+|apdM{|=zs%v zda*RsyvYUBEv1L4vhuE%rdpqvW{dlnYJayl7u5--aIh!h#0ImmUu$l3KTpyIN75ic zO^$-tdGKb5*afC{1{dxuW89^y@$%Kw@vsR7!{f1BxL*yHLATa`Te(`}KCx(_dwx)H zQC(xW##+IXii>LS0w;exym3ZNdY!-USs*7x;n8!gRE5OC`9~rqNdKJ`d{C?7@%6?o z0eqf|nH3q$g{u?j$M`AVMUQdAkVDb?JRC?Vqlml=r_h*&U z)Dp%X2C3UQ#W0w>L1Ce)OlP$GXQf`Lp@4HUWwn*oce7kH@``_JQUnlORUwpY`6X<# z4k=89S9z?>3eq|KRw?zd+2j@*r%H4&1SmQ<(;ByMA-1#5IE+G~7nLuoS6NU#!z%}Y+;$AtPCaOZgJFTEIh$cqY%hl{4>6zA3=X=6gauJTQs-ZK|z_<*zKTj z&+Fj|U_i7T%S^*I7t9eeqZkZgZj+-!P|g^G!%*io*||et)S;)&jN+r#<)9l@u&v^t z_n10@QP|Dl24gvmi-J-cooPbna)KvEl zq*_vR^I?Dbg9GVU+wPrAr}{EI<;aI1ZpTf+m9NRMH^rc@;Mn&FJa?(cb6Ez-H8lN6 zopj7CJ)OgFb1TQY_Ht_Hjg*9HUzg)-hyYr}aqhcBt4Gkgy9(61+X42T*HeDh<@ntSA5xN?L z(^%Gdj%2-hFy)fmh{$+J^|ov$_8;k*N7-6mhEr+LDwsefBi0ElPhBBm5pPxdM3dk*%#i0(c9eq zd{BSLa}kkLx`u1m9I30>C1piiO;h}R4I9QKj}eP-=fV*q>MZPjqVV`!>qla-_#RIO zss#YoY7+62BCg7SD%mMfag~$1elDpDs&2cz;%JMt%lTohUG73HT!&P3nNj@@G6idJ z9{}VWAuHBQsa$6AgfRkatXDn0xWGLC=&gSgmR64GjKZw|aFy|0?Ch3Pu z`k(**Y!o&*$CP;-!mR+TDAy3i;@izU4vDDvdj3&0lu&tnRL+sc76t>^jgXi1@=JgC zeMMpUx!BH7;CQZ`IFi_p*vBubO)4~4A|Msc)Q&Dg~muc+_ZzhMz zRadb}E%ruHau+W4it2Y;mHB;>vd_HaS&SS<4?8lAzVlD-v$vyIKz1?~kR3(Xvy*P# zPMWZm#B9=14CIdsSs#P3fAcbvbC7?3Wm~p)J#;ZV#;O=ec@xbwG({vCS?NEQ z3O%Uy+f;U4t7osbcaghK;o#BI;H3+jFY0p?erer$Y+qw85&NP;?EZ9%J-dGd9yVza z2kA~lk@un}tHeuy>aBh+a8k3d;$R zRS+!^zU3=3t04L=MR^VDomGDj?%%L#RzZd)59k;jV{c1@edSw9TPJO_9O$+W8gjT| z2e&14-p8LGp8fId2G^~IjN!tFoM+~iV*mL1z#Z=GYvd*>6|JxyBXl`mxDb;Z^E$DYO68o6N?(B+unj725M6MrxVtS_=Iik5PZ%Pe<(wjJ4L? z9}dx1c69BeW>vuB?#bis{Nas1`4QVz!u=dfPkqywmk0jfHQRZC8$%fBALYRB@l62x z;MgvD<+w*mOMbR->fx3X9adc>xZS1fC!?X^o~ z%W^6h^*VBwsO(<(;;LTWnst{y*n(p6Z#ar zN({j;b|}tZ82jdJ91P3Xhr6lx`&kfiDgOB(48-q5xKM(0Q9$(&07D5#E<`-6y2Nd! z&ij=k=h^D3v5)xZ9tCYGjNRk@-a=8__1r3K91|-QE-`<5lH+00Q=|dN-}E}C)VKJK z!Kb}k1{k}&{gse#g8#8&nq&W!_AYhzk3js9dGg01Ot_2uWFAdpr3wboC(<&L8UsjK z7L6&?Cxw0+mByT{5d(IG>AftoIHxFRJ;JGq+bS=1L793RqsL$m4 zzyYhDuA6@-m`qX?v3bZSsfjFGEL$L#WzG*lH@$Ku!!gsionbKd9)jD7Wr1bux zT8H`;uvrN-+@Hw}!*G5pRszj>&*+BfX#1ME$V-a4T#AVF<3{a>Ic`Ubwz}9G5^-W! zKf$Hk{XGQ2aCpngO>VT(tlXWhOGGUIO*2Wo$@hPzg<@9=s@QZJ4RmMHZ5Y39rv!fm zh8xC`o9Q;C)gK@<9L{E=w#IfhI@h;ZG8EqhmN49{=*&xujvqgm;>V`(0iczDkb+9)L zr0##V3=X_)eC-WTyzPvU0gk+#Yb?&x4|-7J+|Nmh%jo{Vg|(9n%;(x>2OKxKa?5o) z*Et-?I;&>)SAdQuSm)GiG;4aJX7~8+WkR9e?HX6sY8Yq2r`{;ADW`ff(4FJQT7}_8 zVN12@jkwEYKWdP+M;mnmuJMxUE~2YU)?$Bf)lQbdr{MJdhG3AD&7vM-A?Ct28Ky2$ zXeB`LkTV?|G?6&t6%R)yPB^WNH@hBAEDU7D^qk6|yy#0^1q5Z|Y6qiXzdQ2-LuIX* zA8;f2><7$#U;c&qZapVk5O1quCZ2OkI|^k1}#S1-BOLP z7zfh$$)z-lU@85qNF-JzFXbw2r16Y{F_Dt39ud_=Zj%|mvP|Xg_yPOu1;$takDs7% z1w3@#8gF0r&m5&bKD%`(=4JGqEA4;YK&W%X%TB4#}_kLq&w&vwmr__`O%jx0u*tc@AiiBk7dsWt2j`D_uCPD^n{W_Wu7zxX2Lh75sXGqXESuR7;iQ<|% z)(RREH1Jr{3`wUFM5+eRTKj);Ua(^38x|Tc%atrZ0bRMqT0x(J27YO(GCwTXE~FVd zPcK~Qw=7?{U;wM-3s=0EGK>to_%~4nwrw^SFZ*^I;DS2Mvd;)nep}>5)p%E^5)kCx<<3r46Z$3$Kdpc*Q_0Z$K>B*y z9c~Y?w5DAS32CJN;WU}=uIAM(s82U~C*A3mO4 zpUXOOCjWtd8tg28xd8s|&D9&OjyPmJVdEynwjd`EaH6#I< zOMp(#eYBwnRGs#jR6C^rX!9m=7e9U-JQR{I@BYrOb|}nZvq)F>!o7Ux%YU@(6*G8IU0-_B=a;YSibl@mvYE0G&WfhoZ|?D|r{-pqsX$d9yQ?W27h zino(#%Pr-DeqWe;yJuk{kxDkD*VW%rqq`vZGWa04IR`c zUuoB8la}A&J8=@tACfTAVz_9M7{f;zlK)#pHIYGaYAb)TmjNdAK%oHjsV~}iozjoA zp?F@mXk(h7N5mfci5Sr94xYuPA<#HI)4GJB>MrKjR+m7#Bco{`xm345OUgv$NE*|K z%5kZ>Ulxy6zBjs>j$aDS>@M=Yirl4w4rUgZtxAGua#Ieg%W)v`@(CQaSRE z`lA!Ee5Eql(j{ZN=A^wR@k7c`JuL%BcQ}iU#Fl3#Dp!JXX@F9It)jB9Nl&r-1!pMq@V@FbD;HMz zBb&>a=_TGnQ*(49}CT_Bb__#Q8@LZuW8aBw}OHo9UOhfTB;Yj@vH<@J7 zmp*@cajFjLR+s(L@NP$v7EMFRakpE{lJ{jq}#x%(&SC5FSD8Cl> z;q&Y|{7&75`#3nHJaZ2Rhu%Z_d$_v8fVnlgx|5h8NmqCL-lJI_QAV?PJ7<%y=cpG2 zZetpXtpljIMD-ea??+i%l&K9dC<{^&~BR!?4$(C>2u(T#s| z5n2ITE_0PP=0W67!q5KZF59&Z#SN)faN06!ywo_f=8DqrU^Ug#g4+l_x`>HhThZa2giHHxf$ z<=gFsR*MNU?c6A|T-uTEh_wF^a4d_&RMzcLc7{o-lRWW-c)*iHN7FDmKkP8A8MQ_( z0|?Y=1l7w!Fqw`0iTI@$Tv?`a0yLvzQSP+1uUw)FJo(JZ?>(g|<3YIiZS{W+l-ew9 zNa^AkI6IMd(JHTD9!K2kQlSX0dHGtdrT7EUz|*L?k0j4QoD~?ygV;|_#^cRd>r)qT z{U~pXOfNS$qC~E-u(n&pNmrl!C<;=jD97NGkU9&PTF-Sg(9r59{?y{h7W0oZdy^j& zHjSh-VrJ9G?gWR#0eiHODA0eL>BLaT@7F1|dv~9P?M^joN5`{+s{uC5%S# z2PuSn{$3U6J2TAMf<3u%xIOC1i-I3%mDq25#Qne6Z=2X}D~d(H{^60QBnb!@Ya-&4 zBnA--hyi?(#z&cZrlAOkKKp>r{){LE$*aXq~vw0}M zGwOwbFeWxsEhb?7G#A+NRzMJf^0v0T$D}#O>>l$NL~*jvfJ`Oi&*mA6V!k34zc==i z?9y|)p?>*xLl2lB#9x#&Lc@GwU;OAuH=%OL?P3yJ&h19}%ZwB1)N_J16eWeAwE`8D zD86}Xe{Zuhmf4;IgeS@npM zh;W%nDg%h3e6BC+-ypNL<*&97DG`M1`oKsSiU^8PyYyK$&5v#F62dyY7i#T=n#L$w1^nqFCE1QQLz5Z zI*C(OY>zD9x4I{EgRa|?HoO5%w*KrmnnkvDYSJvH)h(h}^Y$&OL`iJBg@&qY%ZLc$ z^=DJjXmQ3{EE*49DkBoZ-%SChj4mWTl=Xw?2BegyLvd=ZroQtjm56DPDArUT=*;N% z4c+xy)u4*oD%*eQG7P*I(^84G&3bioS{SXWxH74oH{rdIJTLU+n?ir)oQhSyn2(cS zHeP6FGbWuT2E}q4C}1^Rk|~``m!x~hwRI?>*!9*v6i%IKC}IdMOQ)Pr*v5&MJUq)1 zOjaXF!k05>q1r&HgQs2;jybiE;%+)>VJ@fp$z24DTr_JbF5+d&i( zolyh5_vg7CyuW(GseyEM@wKyqEL67m@j5fv5{606FJ@q)4AO-DImXv?{u zC(cM%b7vYR*$+zt&m=YFLcyS*KYi={}g$XjuCTP6H2 z?B#!9FIpK5$O6wUPR`$JIRa^&atR0;bD=L!F3uQb#y5dlPi{$kTkZAbmV^O6b|!Ii z_Wtabk0%!x@v-#K6k4zqabr?=6*WY+BdkGd|Lx zkT7;8h{K0^-RKx;D}cG+m#}Hen7Xyw2R5?pn)Jm_7X|e}y$ce?GcmHL^k~cvQzyP|{ERgEOP+tE zDs4=Yq-qe$p1fH<(U#sZ1W_m{)h=i*l2oSn85NTaN-KqFS4|MCQ`VC<6tP&(0FXhG z#}p(3Y)Ts%gC_?85q}fJ4E}%6iXKA=A`}(*?NSQ%f z+V*g1*vESDP+7lozA8KzRIXiEP5%)&sjWoS^w$5&}qX3k$oc3k_)M z)u|m8jY*B-6-rnr%@I^blw>w(>qDZQq#if*N>$Dd;-Xo?qLT8Z}dl!T#(pdH)kDH4LGeosNR389J92~kNKifCoa&2_Bq3&qkl?#lt+rgVDEqzy&P zt#|C*LaSJ!XV`&lkpV2%#-I=|OhXyBqMDK~L`2C9-Z$4UX@sV})M|g1jdT$T9>O$~ zQR2O9oU?Q~@eWP{%zy^EO-$B@0c64)J0W_!+?Vq87c!H;CMBIqF@zRv9GbV%M9<*& zC1&$R0;Ke+VJH9z(@^v>my({v>1&&+XPgt;JJJjSj3UuWN>w}T(;=^=Llb27uZIjN zaAeXDO{H1)uHF;1ttfv@GJJ`;sowSX3{4{JiSU_jGT)B^UDH@pJSGu2-4!-b#OTEyk~5Av9En0WKc{9pd`>2a16N% ze8H2@0p?3PouI1&MdBF`^mhn691ED1CMy2=!w;#YNs7Pzuw(UTf`b0fqPF2(k2%_m zc%$oi1@JeN66$}dX78HgJ!^nirUCIrw>8ctj*Pdh)oA-calX$Vk}$fHFP0ew>r(vl zL#U|XQP3-*ym;GOj%YGi6C@pgW|G(4a-iArCQFnju1!1n_#8^@urkpt!eRm zlUfJU&)zr~l{6t!^YgK|-+1Gb=xII?-?O3Wcr#qNazcM%=hx5MjrMy5RzP}YsdN^b zmJoFwp*gahPZ)h``+UMcT#M%uM&b5xK4Anc>U;+A@3oERJ9GxH*}SZ%{FJ~X4*k)< z#NCw^a{#U|tN(+MwKg@Kp5GDMn%S7j&iY(?OSkXEj5cD=ZZ~GnBWI}kkIMPT&t$&d zdGWo7X%c^?K7cTZO25wC#eC#6oJ@sZGhO}r4*g*)Z<}V?)Jquhi?KPfuGC;h_p}Xi ziNYJ-575GkQ^YB-ai0dXz!M>*AH|$P)7%nMd<0{NZJte<*Iu7>F0bixG@c26f<6VcP@gv%nZ zr!#y0DIhOaUlfsJR9Xb-)B)Uvuge#4P+im>>L4sDc&Ac`d_UXXnz0*dWXy}1n#PTi zHa)8oP;A!XHYHtv&9Vn3xt)dJXWl(0;Hs-ET4(XIoJMID@=r<1N#|#tQwtYaSWZnD z`5-Gs3$A`ZdLjAhraeQ;L*#$;9+L43`w=qg2!j;AsCqVwFnGjuhx^0hy`%l%?w$~Q zZ)v_laaT}m=FCfP`uNv25hd$F{AqtU-4=5DQSiW|@y33@+9{?3nG!B!i-k;*F$s)=-HO>_(9u2yE73&^jktFHNE$EZg=BSCxd_Gg9Er zv>rzJq`qsDx?yHoo!SAXQ-iyn_YgC~jm?_|wpy1YUxiCuT8@qClzy8A|25BeDsDBn~O{rBgH^3Eb9< z6;m`B@vf~iD}A|XA(Q1K_jNIszux52W(AZ9BRr*8EmaeA2Qe-YE2Q!=un)a^7;#IB9+2}5CAMz$K#Jq}V0iX!htqck)T2)<+~!f7}ji~E1FGY%KIEpWk7!{Kj?)&_oFtq>31&Szs`1(Gb5 zT+}ge=>)~3q6ALmybP0f;e0ycmKUy1!pOTYtEJY)Tw?WSQQ@Mc>W!dSEezd7H0^Rp z3J+H?Svgy9WfIgTI0}D0OCaiFF!jc@**o*<7Yf<_>JPUx@F(nAf3_DcG%_LnBaDgV zT&h%hLUgd*^D)@3LHCn#N;OUAP(t(G$N}B{6(}1Oc%|noEBt`?ITXEsbTJ>||F{ zoh&P)dTis7WSBGWFxqJ_`R`;qkGr(*YNy*gG9?EsB-X0hgfIJsoi63GH-9 z{%c7weJ-KiLGto0@W-Rr=9z&jR91Fo44R4<(f}eUi=9)yqQgcV;BxV=OnP zN@L77(@Bfqb9a?i%Dm;U20w>ATj|68tn}dutn^_wE1eW9 z^fF7G>UG1DEuU&18e8iI(Tud4*J2;`Y_Sjfv)G3#u-J#)EVf^;*5|QI=w;uC=MN8l ztOb}61*LzOY5Ot#5rrigdq%iq!)7<+N9~25ch(&@2@MzQGYWiQ=bimlfgOx6{p zr)O4XDc#+k^Dgdge~A}&cLkXjcb6~qBCO?QI8C)-VJ-W5ZFP6oD>dVypnzI=I8QkW z^;dsB!F zToeS7RnvP+h@b(GteV~_ArjwJ)j>Gi*;tYbTzyfWOU&7aDEu6Z>L!s>?bm-S z9fC$buA%QkAt`%L+@e93;0_mzRFlMfl72^pD=r$L$z@St45l563Iii8TU0dIQ4>4# z7cZE=BKhJ4`33cJ59ycE-{FoL`UX|HJ)$bzRlq7;BV1)c$Hy&^0&{dgf>-ts9iXw2 z@&i62&a4&{6x#R=;$ZqT_LD3$;PijPDBLB+56}3W85*d$hEW$9@Y!qBMM8D1I+j6W zKDq2X3Y^I`)++2g8ltJO^U|(YURC4%-pSE`PmQTov4Am`>}s@FI4HX{Fl0tsBeF~6mBQK zP2>4Yb|CdfSHhutQnS#d}0sZ+S4vOyLS~!16m~y&b_~I8w+9O1i#<)hDs+;)~ zHec0)y}~#3noF5k_lk1jfEa&kZhB1q%K!Fh*i79bX1uM=ERC@x@t$@h6o!|g<;(nE z{`Bc_UY@^>sYS@aMKz8Wh-X01kiY|4phF?D=vkIk%ZfrIk1`dNftZ6x;MBLqfyPF= zGzK&S4E!lJ*8mLv8thK7AAD}?xF}cQGH07JhfA5^5nBTo;?M-+S`B|=#CPH(nm;6A zq+T=(Uo(gT6O410Hw~Eyl$wPkgTzWtFxT2>hBz$2^fHY|FrnNkP2=5d(&%9NSu%c0 z9k}!+ex}^#yKMPmMO6v?jHC2AcGyy_Jd6N2+FiN zYw#k26&25wqeryG@`EQokp}YGZ+(42M z4^mi>_}*pEBN9xnhE)0_{p?K`e&SjRf(348yFQzEY_5NS@;uWnnT)Ks1T!$p&4Q)H zE?lC~&2Y11rIxK+`F=e4T)Tib{@8ztya|_VbPL^3tunX_9zIRmH4gm_MKIbel1V4Z zB^AN4GewI8yIp$NugA}Axqq}s#M@L(!JZ!bfBfadO0-Ii__CF<_z5maK})ZFYFmo2 zDgT*gRK|b)SLaVZd={6|E%h_`K@{ISI^5qoI@d{4OqnJyK-^&)=hXaB33@!%nx z$RA>Qdjp*Xs^ha1vfQ2ec4Iyr`H`5>XfF54Wt0>29Vj`M5pX44n67hfa>O@fvVcoo zItMDOG;jQ9Dieo)&LOQiJ{}$p4-bxNT63TN+RK03lG>Pap|-2d9;2MJLIjN3Y&px^ zXkCL8tYtcN;+gm0r;mP|T178RfVJxM*^9gj%QzUx zU$cLsD)5UMlOft?l+)bLmQ-d{mIr>kGf<)P=+T=x=l7BK985qx8txwp>D-zg1@bp7 zX%XF9>$GV0JYtm1+|`ye2YP?9YINwX7uJ}M;fwRe8+)IkAby^DQ&?$U5BK-odh{HH zFZY&ohVF}3V|mP-X<2`uw>40Kc;u$O5PpB-dOKh%3q+5|UlxcSn&y^@Re?+8z>rrE z_uimXL<%D={gI>~%F_Y=UevBuJ!kgCT1`fq7NOrz*~-1qTS@m5g$H#78Vnyd)$+X> z$e;CsX?!vsZ$j~hyad(jS-1*<;oeT%Q>n^dyx8$gh3+MIr($PT#CnsKDgpFcY43l} zPjK6(UQ9FG{0UdFEtKQBm>$JjXtZ?Z7@(qJmy)<;15mlaV?gQCC3Fmkfi{-p;L z=cn>}3fp4By_@tx%8z^zBdS-*&UiME_36Is$a zwk0E4ey-&r*k+~?31-=JlBhCB`Icl-2N@?}j^<0ec899{WfwmXBGrVK95udmN9f4P5qcYgN% z?cK%M_4UawXLs+eK3<&MFl{ELVGesUifnz6t!OZvZ%`tNlNLO98KqS`cyo4neRavS zj@=1Zu_Iv`p4Cb*Rr@||Jtj>EOsg_lJt%E_6ct}hfH;YKZ!*Z5$cB+dLut}<=L$g& zg|WWo6{+%M?r#qdk-~H*X+nR`n_^{4$NwRmOyqI*b7XKl$nf{Sd*ivk01R{K0>z@5 z)}#_eqF7MFVpO6;_#7j1#b>A5#Wkt;#28e!E_Z?z9Wtsf~r9PMlqwoWEa6S$ewW(hOR) z14inPSMSdXYx^$p{c-4x{D@C8y0;NVuMe79M6)vW6P^b9GCPxYQ7QE3pco6)Je25m;mhVKR6 zEMG6Pt~h`VSXyiODswseI?LCdXwB--YA6* zq#c6Ulp6GJ56ScH>+N5H2EAknv=p=?0rlR@U#V-pI0?18OH_ zK}$>_GifYj=i)_rs}i$r6+^%+Fq~qlur;W>t9}$Bpsk93v|CiypbnX* z&e^3d{5Y0xdYN&RIy}hVf=;h4uWvq{oL}Btb6GB9vPAGi)}0~?JrpBD7J5t*f~=zPl`S^=v%GL|oYsFJn8h=4TC1~raJd}H?)6~r zNDPX4dzXH9@EArDFWJ;RiEpL0QCS>yJr88|F3tCF1$HF*#q~6gXck5;^N8^%OhaKU zKcjhsi|qagrg0KZ|1+49gVa2`XKF5qR38*3^j-p0xHhjtpjr%5tFI~j8Em+8Z`}e_ zxY7^PeZPOfeCOIs3R#IV(^ zOOwq4*rHu52D2S(A$E@Ro(MhKK$x^qr#-w;?80OcBU$1eP+mLM(`us0Cz-4!ie8dw zs1>|lpeP>^0jzr9?dP(8$oOo*BvH5aIeIHyja`3Bbt_h**CX?;J3U(NBg$n)Z?KgT zTgr!kTuDd4yR*&HmaIQy-Z2l?JZ(%`YN{njE!FPzbF)9D zQbl*7l|^uBqdnU0V`HMzMhjk0X^Z*RV|wY;x|wEox90*a zceh83;O+`awA@|uZf4aWb_KTC-K9T#@JF*H6RAR5o)hctniqfdUk!@%9#dN{=9V7looXofxW#l?0KMAY-zb)UvCU_@saE zx-Hu-ZOgY5Y^$rh!OqT^kSm8T#Sc+1OTy^QJQ$DssOOGXxk%0WdAPlMApXN`VW-3z zX(U3+t7Tss9lxX)-W_favDN>U+v<>nA#_ry33ILfk4cbD=y%fgV=On=aAX`l1rMs% zjW->|19=ip(@zG_sbo4AgkDtUy>5R$r3LTMsHO*sNBM(cls!lMmE z?L!4>z=+!$!%e5`tN;;^t=WHVK?+SMN+M*r`o$y@B&V)F4NX4m`)~7IkTza_aVx%S zQ@cL292P!xq128h&p|vO=uAOgF74@#YNp*p`?IHTndo*l7W%CEyD-fLUCOVI00<+Z zyY980_fj6Zr8*IR$3gWPVs{3F6{G-(m+}qbtb<*4vspB>Ym;l(i8-(h{8AQh(VuQ9 zUq`7XcqR(U!yn*N7QC-Y zDy=!ByeUu&b=vPvh1-8jaWg|VAkuiT>hW+aaVESM6SpvY`^Sj6Sq!-FJz?0) zBQ4>JG>>T(HA6BD2I=OrK{pHNi2bf*^0sY@*oUm*&*lS_YLx7n+K;PxyQ_Z(w(O~*o^ z9Av5O64Wp(gBlJLsNs+fYDkr3U11Ebw|6Dd23bPV)C(GbAP^5cp$!Z`+BF!UuufnA z(0;BD7yy5?s?7v#Er5WWe~roheNRvY{5eQXq#|b(5_rG0A^ixap%bKmB5H5)^7B*Lb5To0OdWW~D+K(vZM@#^sMD7FoZ^YgzP4EnFWZDgr{%lXw~@RO3c|rO6i0pAYjuyq?mWKW!8w1Q z21($JgMVd(CFPvP(*1dfC(GPQ;MJS(G@QMBYtHu2q~@q%BaMhcW;FW35==E+3O2AR z8pu&~k40&gSWvEqE4p>By2q+~OBg5@(J-Zexa1nEqGcdZuC=4LlLkFwRmutklnXII z@7Ia)hgIpBfuS(agYNQbrzm%ST<(940TM#9be$j}w4uH$NC<>rO%411a12O24zPw& zC1E~P-xcsesAOWY*8FG>Qpm`F_MnZ|Uo`wZpgpYASsPguBJcHgf&;1BmSSnMBWs%z z?}@Lp*#PXJ%uFeyDOVTd!HXTFaSJgd0!1IGKkJqs7#CYA!;Ed7kr7mg%9n(b#LKA8V|)i%QRH)EqqWc zu?;2!?5NR0kbkS&N28;Z!W9BnnI>+nbSqNnb4*iHbEqxd8V-w%OxQ2fvHhs@t&{1G( z3Vw~wqn+))RL+cGP^#tDBD&v79rji^ov@YWg|{569^?6Mdk%1MG^bo+VM1KfiJ^eu z5@S=LzuPN9#rMik@nH%T-!p`Yt9(94iBHs+i(9TDN}tY2 zCnu@;R(%M{d~`96oQQ$86XX$N$qMLRK6a-2=0gY5?cgj9$1RhUIjrde;^A=fjj!7E zIixpaRJw&(d-Kw05`-#ON&S0i?+J*z&53qMqs_xr0B}WgiG~17IvzVVQMyhz_Kq9n zocBj4QD*WUXwuAk{s_@4Qw=3ghZKi|Op4y>oxoJ->geqV>GwG)XAW>N)zg%MF>Qp4 zamCb`Nt8U)OujnDK0_FGuAa_zt`1+H*U{zCwwbt@>(IZqlGI)|Q)n}cRaz^o!2A46 zkpYT;I>k2Rb725?{>EBCy<*_C1r{$!@0OiY=rJ;SgByvxrz*d!?q-98 z0#M9}z2M3k@-&Y>U7Xvyqt-9$qNV zUOJ5R^_fhbrBq#tnjw_ZklvC%qs`f9@w{mSgIMl~GQZLSgygXSNP*^a$K-$W5@aeb%OHf7ZVyaQ9|Vc{nH1Th55a}BfL+b;Ox0rKBxB)&Sn>@A13s-X1T0aw*{^z^6PJ_u!*5eztC zM~0e$c|3q8wTL;x$bVF`OmTIoi?WkbIAv)s1ml3da{qKL&JB*idT%;RA$}MW9Veb@ zfqztVZrD0=?MEr!)bAd$eRi6CXEhpuk`_(fh+fs$L+?+94d_O=M9(QbcGje+xCWjO ziiwwju-^)v7xa+~tC|rsE04A;vIb05>k&Q;`V@EmWT5UG{KZ_V=w&>;Z>)N~coIj4 zE98Lfs=waL&I8&6_rvU?E90el9#08^R@C=zfDvYDcpb|&x=g$^J?zzPW=+CHT>MJ+ z%W|#qXB?WP4M8$Y>+SBTKuCvdi2M5ubeoDq&NfaJ#49PjVV$VTz$>d03A!+vjL)y5 zulG$hiEiGGH`S~(t_=c&&+1JP=&zFt_$0s_*aVVG!EsHbQvoxlJwe9%N=8#~mALbH z)~&*hLAK#W^>HIrS2%O+?6H2Jv_D^QXVc$f*?5i92sbX*8?;*KGX!8Kls8@HQ|TjU zged}}sMGsZD}j6DsyKAQLv^oe{1CSikx_Epl-9K^eN)L_YS%a^Xwg(41Df>WdwPJN zS~r~F0v=~0vmEK2;Qg}H-)`Z{Z~jvCmdoPX_e^J=_%1G%C11jEp`A=Cur$YzCEDAK~QP|+@4>1J#EDtH|(-_J#zoO6Tr*2c8D6Y^KD72 znfYcgch-$#dN;d+t&)lUHoboQyiBeVwEL#|&Wq{4Cus{KN2X0obr)aP2@ZH7v;3Mu zoD=+WdS34Q+Zx8#_3gt55U1?^L8>Mna6G9>r1=wOp6u9ezbjPqC;3|ho{@^^0>=4KO z&Zk2s&rklZ)WxJE;A$MqcMHIfdyFD*B%aVz1nH;xlaSz(ibZ#+viN0A8ScUw< zk8+GC+^^vA`A6Ur#DyE@=TvCWkLuP9V8cVeW)Juy?S~ArC+QxW#1CL}>u(FkGoayB z7)bu&stHRf)WoxnUF>?SnnXSF@}|`5r7Y~F#(Iu;Y!>7*RRwQfi}%bOVI-B^fv&}5 z<5NH-j?;4QZPB%<150~<_K)8CCGf}OX>xse)Ue+F98)kl*Y`ArkWwDfD(_arM(0Cw z#!S8}bq2XiHl0In)vTt0aX8Ljbou7)o(=23^Ez^f3ElH5 zDR&sOvNNag*E?i}=o<&)A*_YB;Gx|YnNE)>eDQ5d0ZQ=YOuisHM#(wtHUHXz()TE0w)2`Fst)C1E}zVL2ANV8wea?^0_QlWsU za8q4gtqLTq(>Qjbyf=2H_`~n#@*LV(cA)v>Lj(A2p%_uEMDNpygx63O&b@XRT`3l- zRB@E5s>({?L=E6)RWdGY)_TJsKyyM{R5GuLSa?hV_WtMoQfB+t#ly+j<>T`Gn9&3C zrzs-gBdJ?gg1E^)P47_D)1?3O`Bst-|D(13Y$);%vXb~(_Q>b1Fjv0QmH;}A#8@wR z&(cfQJ}RpKwd(7(LMbmJ*>=V&^a53aQAW~V0s#Oq_T(La=;>o95izS5JQVlYPq zK2V+un0;}zU)0=XE8Ft%o8w2qz>>~?WUOHHZmbw)*HfUW>LyRp8sEt_wxlHd5-)0| zNR%g#)E3sIK$6pMOsaHu}5uxuHYiPwR&0jEq==p3V z+4MUC?8(_uo!xh~Vqo}0;KSIcOj3xZI+TT9AFDgehAI493ZZ!^bu^)j$nJyQp^{vU ze#CAqe+yM~eS5PK8{NtY3tC!*HI>;4-E-PGjnv_lXEmbbq$21lotu%hZHamHj9e`= z5cQQ%M&fdmUZtUYnWt#5g5K|!>$-oByGpXSkWj>=Dym4lz(BXxa6n43pkQb~P*6}n zAhvR8$~HtKX+ke?NC|>)ZQw-O(6FFC<}hSh?KWguoki~dS^ck5eXt%_8@!p05zK$K z9}kMOua`L7wgv|sDEI$t`|UgwY4Hy_aBVloI$m)9*@&I3$kO(Xbr90xQzMYuY94gD zI{x3LNN;g?KLjA%HPrvNsl!_wZW>bn5m?)JzwY3l|LffLa{}4_-SoegPrt>%g)t@Q zwJ{~=*9iRQ_TK?`_x0h@YG2~u0Lyxt_PElCe!F#4j)wHyx0roaramK}?PbPYKJN94 zh+YxR?WI!mj29R<5HB__e_mu?OcQ=E8W9YU&K`(HVdZEL^XTyMRo(W^=B23bOU>@UdfLQx{lX9lM zL2TNsWkV(%=5=M1`+GQd72Tr1g{kdbtQoDV@%m6al{Kn95h3`fMKq>^)px?oW*klr zm2qRfMUkuy-Js+LlYzoT+qa{7UoUr5)AB=@_@go^S6N`g<$sIoGR3N5Dmix-=1P@ z#k3~#Wt}~;YI?^9DcCK@w8n`D?sLDf$h0F??$HV{1#X-qJEUP~05QPF@o+TovtqD| zusnNzw^xXrrZXF^tx<|zgvlUNj;34+!G2{P^C2**Ai!Io45z#xV__El%b7ikG3(>l zIFk^$&Wv6D**HDBSiAIk?zk7Vs~WW{(ARk?l#Gh$q_B0KqAF36%;H*YLYfH3lB%(9 z$~-SqlfLkgJ-_7^kc#=+$BiAkOsVehT)7iL>iK=$QaZ})R%L#Bs@5bPPvu3zlR}E( z9QkY*Hfij=y4xaE3e2Do+d95&AJq<|D&rlJGOEkR8_3y8f{*z4k+6wMIK>pMD*MqqT{Pby)gE8oQ zOTe~8&<#ccJ}MJsGI3q=ODxQx1T-;9hAF#?02CikK+oa0+wZ>5EN8Ywque=ew~z#T#Ds!urZ#eixx zlB8KB#rmnI`(Wpj->(|!k(%4F6e(ugtoh|fnvN0H0Q5!O8+1IuTU_YugE>+>Dyd+R zyrOQ19K)8Ztw4AfU(9PyIGdql4xpEm%!o+q`~Ar(*|;{%5ZbbE0hPfu-RJi=gSNkF4LKwV)s;tW^#Lt9%yPL2Hv$ODtZcb=Dn%({9Nqf^9eC6rII)+9>#5nro^s*l)R7BC_l}|(Q?L72Nx_??c$TL)Y z?^&OA{pn@EqAleNJYE_6kF=;y_FiWdNBAg^{ zXc{m@luUVu@(N-`m&6H2G2bC+z*qTeTE?Y8&w$>55Af~O-K{mOs<-}l{rAb&%S{ho zbbNYcSmi4#BQ3Ec5nv0$K++IYdO9ZlQXy%5C9io)btG%uJ4%aqRM{7LIhWmMHDZ-i zDDvr=sY<|z2|w|?o_A!zntFZXx+AYGb4ijs37rDho-#EoH3BT)l?FyS=W*>5{^37X zH)GK2_w1VOEYw=bT=hC^>pF#XrNP3@Q`?9DQVzbV6BbWe4G@Z-e5sfJ+ciqp4OSAz zLfYgaV}`2EwiW=TOM%pyoBt+GSa9QEM2=K9in`}Xq_N7l^NdoaJL^k$lES-sdV06! zmd>zAF_|fZ7_nd1qLGZhqr0x}yX$UHKnH1nw8!0r)`&STZZ_t4#Br==4D4g*%?u3xHf++kUJAT`|3SJw0X28n$g(cSz%``+oVLo?6;w@y|3^h{aGi6W}FpXkM zR}=`D7{8}WB(dKUzq`T|YQTrV2;24L5D!ld z@-W)kBbfjr%@KC|jyiTdD+xC}s=rk#k8Ya~!zVlA2#6DM@@9l>J(%0`<^L|Bmg30| zGIYLI1%#Gw@%+8OGZeFkI^m$53^axk8aJs1rba0zB~3Ars<0@7N91oq=)sq)&S}f~ zZ5+3P&=M1KRxRz*V;|38p!)P@ndy{R;xy$5`e~sUE9xnv3&fwiTP7P_*_1|7D{yk# zUU>6B|H>+{`Fh(em=S_gwwDVlq#qiIDo$pv8z8LXv;e76+_azpi5c0Z3@4Cx5&5_5 zF#fYL`$SLV&`dY+HNv^EmV;Ud2u%hgC|YyKGtcJbSGo1oQy)egj{|{3&}~j})e+h2 z9Z3mYl*f*D6>Fnmw8ZZ-3X=i@1bp-N7bJvRUdtm-yO^LK5>dqvd@;SKOX+W!SeSl2 zS3vm*q)13V;#=jeUdxsG26Yh_l(c$A`~o%}x;HpaC@j>?QA&x5PwZ$j!4l}X%c5U; z+sE@!rDC7GT${myZ7N^oZhcTKeK@Q}m@b5BH|fdG+YnzE^JS`|4&cSUsAUH7VS`pkNZylY;+gTcf^ zBB&iD<~b}lK5FU&JV@l#d@+thC;ptw{jdaE&BIsO>c`faMTx;s4fe^q`-ZT3AMC_t zVJE{f7`P$TrBo1Bl0fv|kCEl*$r|X3qWJy-SyLKNM(KTCUb+l@ed+R6pn&}fRyz+@ zHCyPURz&EV*d-9<<4e(5m;hiH0~Q#Q6)J|X8zsGa@5ri<4D(gC+aeFe-Owwx{dOb{ z@~Y->jt`agSA>s*$?$3G1S8c7&;fv&V^@&RD_)umk!p5}krj=P8H`FzOl+D;1CH6n z{#k+Z6=DFq)p9_Vct%g?B0!8JNA4)_{0wWXLzyIh=bv%IyWcTC#E?m=9PLQW0mCql zLppwv@;+zm*U9hZvXZw^pte~j0%=iHka>)|8mj0N3~Lp#Guk?r0h6~ygj8k4*z0|S zqVxF$L4I7n3bC-)!(arSkZQH$XkMfp6(Yf8C*srm;&0xK^_rTH8@Z5JxVJG-|JPUr%UA;+%&0`XQg4@u}i`gpK z8j=!Qnl?jp{YfdB3=m9=8hIbfJ2nAo@~k`k`+`3?)RciomICgeCD)n=GGVM`02Eyv zZLGu56d?lZY`+Hs16j)ROQoX^mTG30M@Zen6> z+S_CEI}H2VE1f9@E0@yOv!JIiT}a&`(d`rA-?)X-Fg&!T_+)M48(O*xN}D($Xdx+} zOTv<8uidI6eE>fCYax@00qypE zRnXVDHvo~ANaO6YyTuGSWQyt?dOL%vBeG}?>s5M$l^Ji)5c;3(g4yxy0!7CBE_+PR z{WP~f^Im6TJP7#RvfbfVMAg~h>mO%{)H9T(=xPHdbMFY9x~A>fKV|nyY~G{%0@Yb< zcJ3b_P1hIr954#RyyoI1PUTK(9#iYp9id#xB7maWD(?w}AjnYy+hhSZ(wpB?+-Gav z096jzG`h8D$}{$`vCxiY+CUfd5F*0}#g~V4ZOrW+V5SzkO^msoa0h0M z5a^Ljs?#ZJjVZ1VOU&Bqm$mq89)Ho?9$@(#Quvlt+!(V+`J+_3LYuxnSr3Po$+mnk z8LT#2ie~ZvI5yJ-yDJVrq8SUR?={P0{t^^{40}WvPp>D^Yb3y|yy)Yg4aM zZv+UFkGdZ|Ka9FN?mNJ^;p@Fgd2R%_`Mq=;VPep4e78J_xMRFo_;OvMbZ?xCuK)QC z_Jx{mr4DRX6X|~Bh-~RDK{*Hjz?%s8*Qd%%yVH=^Rs>fh+7*_d=;2M-f8|w{p_I0# z_Liais@QB2UG~PohiJmaP1Cq0F(R6Zg%0guL;!&tOfH6NG>Hegf-^-t z`twKIu@bCox>Tmc8=idypcZkGX=iTI&!NKNSL`joZ&Fm!sg@e9MMr@xv*V8!cZUG> zON%Izn&OfTA@9l>hM9q*L#@_9c@((={5_TQ5<*Q4@rp_%_;zM3S>Yq1q zlo?~E4*W&=M|eOw@&r4ZyW^?daTI>ZMi$1s+Mx= zVJEi{DldY4m1^rDpmNxFdL&GZH})5RXu}C@Ky*E}PKS!4@pR2bZa$ZCng}{mEb*G} zqE(cQVx+J-Q{EY%$;Dcqo5X+1kN~=9-t9B$A^LZrQI<4)K3|3KmZf6G0}u?&IkU;W zs4kTKMnWy9&?az&R8WooJdxKyCo{#6j4yOFMWbH`qe#*Skn2;qon>iYe|fbPai7-1 zaWj2o*)2OpgIj@w?8=Ik1O`>AumRyw)DxGdfS-Y_S}d zDn8L5**;mJ1#9xX+6ELG${Qg8H`IJXHyR6 zNQh{EP6rWd1{HH9YG-D?uV_3RL^ODyA@!g`IVaovQ2l`Qd!HS!c`o}9sOc`8d0u&5 zX?+v~R0NQ;jHC@lcI5fhdV@)nJLM;ae#E#Bhzh&< zE?ccvYI`(CC080<_f=~Qc8&{*>knC1E7dAbL{@QeT!cbU*F{qO8R!Nl#Mz{BL5nn3_FghS$~Pip81i zG{5{_awWZ^h~IISM2#ndCtMa}?IEh6Crn5R$pR__-k0em>z0@o>`HG}p9kMj+Q6J7Aa(C>Uow0#HS;# zNC32O5pkYRDj5l!8ML&b16 zJdwGHi-jA-qvA>b$U`an0$D-ht&0QfpXd?v?X!Y^X?~t;g#=VyG`9|l2Z~m{rZAD` z!(`H1_r*-9vZhUObl7<6Gq9;rHqlkQBAovFHtaF2paf>AF=L4Lv;P@GzEExGUF7X> zbtd&VZSXtFPk&=5H?j{{Iafaawz;n)-59*5bsqovsi3|K)ev10_Vl4G*Z|CXTE3(y zJG9N8l#85JwjMn0k@TMGbiwpgSc_i`KzEq78x{CCMjpD@B`d!U25(_Z&6ZOZva`@! zO(@w&JP!;-NbGLMcCuM&#(ZD`$(YtN#$zGzrac{Cug-!kz;hNGORSs6^BR%ksM*j9d zP)HdtRYv(|1VouiHt197=j0?&H4~y>Yru6zgSp4zAbbTh=Ex6hzyJuP;pUoMszzSL zX9-{k!=j?P=Z3-ZqAEU(-xd$HKSJs%a9em<0mI(~>h-i3fnkW}wuv3FCl-ik zS`D$_S|N+FkS&46!~mQQ30Ti}^Q4X0t*Dqcna*HRRq#1&M!TC)Fj9_#6iB{#9QQKt zV|#!6_kV%ToPE8`m0Q!ZbTxQ&m6`;Uj}R&AlwL=j2iZz?2^q}Ic;xdh>DZ#ze>Cwo zUYN`*k2dR`L{ezbJ_>ZRzqEbczU%2{EF~(JnA`KA zt#ORgQYo7wY}>P?&Wq__=^H5L$xwc4=C|7tnSb&ldxY^j=%$S^68(zGtd=&eDs&NK zSU%V{I5FX+=fYKp2id~tB*-EdDu|4|g>Z<3dEklXnpYL@m#(XV<-nP7!YlSdT*_(J z@C)|4-^MdozX762Qo%1~Qw9=c;z+^`k<~le1Y2{ksR@rFf-w`4s^(=kdo-u{Gg08R z|Bwdh!MH2VNB3K7Y|C7Qj4Wq4!CO{kdNfRTOx&cX0px<*yf|OEU>UV-u7VKHBu6qN z_~SQ?Po%dynsRJcxtq0@HI2PMK|G4U;m@LQ;KwP%ynyL?cfE^Y2HBV)^jF9?QbUkYCdO(HQmE4Q+9D@pb>ccAOYy#vKv6OTTpuMZ$ZQzRW_HT0dIx4jl zmE1PxiELsmeD4Ek2dbfk;nzw!(L?+mPr$fTMIy!hja%(;RnaS>RWs@- zN21J0zDB6E(}qj$bb(9v_({}ztHRipb>p_JKOo81Yl0Osa&rHbbCwFBR!g83$U8Anw&;o?Ak&rjLZ;Af2o6Ue?k!9)Mjg%lL4GpLis#0$9Pa7bz;LJs|d?rG?&8V&x;Jf zVBn9${d02zFcDNvBulxa4GSH}XD3P__Q8Q$`Gmqtm(Xo|=m)6Ib{uWdGO1F5Na6Pv z5X4BL3E;&2q$`LbXRE6*WuRY~ipL7+y7*s8H^Ch_%0WLPt+JiRub!eMgpiI=fKn0y zczc7=O2ORVrRm0}8F;U88_2Q))u{#3R1y8aQ16$=# zkJJliRL0D(&@)YACl>S_L=K$eD2WIv?1hf0BMS^itW<43d~CT!f&Ul?pV}octQ>1T zh-6TNTsJ(Y=*g)vH+Fca(Co1(;5RSS&*Dx&fQpiIUEUfKbm=N=X&C7B?|3KH|9qs? zv*vWpE4};;(Bo{_kT|K)LL5*teb^TNjfVJq%WW97e?;dRQeqLR1utwdDKiB^>~9S` zXfVz}H(>3vhy}#p&mYX~sG;;li6yBf7!I3J+TC{i=J&1sQzY)Uj}8Dr&A+N*6rFvq zhodwfK6a3_A3oD!v`YpmUC3WOE28LMJ=P5{3>{V9aXBr&Ij=;XUai5Xs@Z$i)T;<` z+I1EQ!Yh$gUJLrd5M=eFC4kQP@A^s&58egOyTiT-wE0Ac?B~4BZuv!-3K3}_*xC^f z-b!AgWMYNbe-}SGFd_ivA<@r)yCLPI$puh^*Tgf+U7QHj+98<~(?dXC8D`SUrp2{9 zX#HO}hW(WMeneul@EjsG`=9w2ePH3W%^P~_wpBU>DXt}*9}>^{V$BR%POIl$?cf*lD_6rMMt;&KJomSHvBu>ji3enmntwFmY=hoSv=&Q~0Ks%GuZmb+7 zDvd|39;KY6dn-VCYKueddlSQ6=_*NpO2ZF@`*Q;6n3m!;aL5FCZ{lWOE1aq*o-^Dg z+|+aKB{1B-+JRx$W{oe?=52#H?xaw_`wPFH&%{X6rDZLjuL9s_qW@b^UDR=P_x>|()Wcsw zRZ>=atA3HbZ-)&);GZfuyXY%EZ10gL$Gb2{)w!c1uHIOPk3Qp>WSzKhNw8 z%D3k7wbJ5fNzDz&CT$YuiN#D1HI64nrIbMlfXd7CzqI?P(P0A#`;6p-! zs53?a&>*{6w`yF{JPm9j%&S<|D!ow%f%LMWk{=v(!zA;6)jye|;ws+h7W6}Y&W(Af zJGwAQ6H_c~WR`;QudNeYIu-@&To`a++74i*MKCDV7DXG0h?cKzcfbeM4aYffspYq| zVa_nha=O0vX+Oc%@*fi2`{x{9!dt%>vXdm}ZZ4>Z|QD?t3!)ipC7{7;q1 zdLk#z*2NEcC36q5zBnz{TP8Wq$sf9oPNct|(LfukGqx*Q9s?BY111%`FfmFS`;`#_ z043&x@;*HW2g&dg9!S#wDu{qy2Umm{-eN(p#KUr&5P^t(H|DRrua13Sxxf9z{TBL~ zEy1f*P+$ipSFyM3tmvdEQC>*y61rEM%$Pk73fp4rbTUbWF>jExDSU)HFiutB3-k9+ zk~>qf&Ac{txBbSM>tbYImZr=$$?zOIfS`jRMo!bGPX~a8-x12I0DM?`Ss!lyTJ$P> z+i!im%wn;+%0yXdppc$@;CUg=FE~0Nam4-`i-}bT16PefO^FHG8U<#ve6BDsP?|SM zNzVkI2N{n`-W)_ys;QriZk9yM3jsZM07WXJD5Y8zl|d||trqNX#7ohU<5=-G;G8vT z7hFjLUMyFd4Q)+P(_Iy3$_HbzF*q?;-pTtn6;mX~cuSdTosqq4<(C~J3NS^E++Pwa z&Nm3!6N*OsS`jg6t5&FRO65y~I8PK#v_|=`2fKHSDiO_2`jMr#3;I%5$bPvbHC;Gm zogW}Qdh*V}(a0btH?d^Frg=0dpu8<(WgetSR44CzpA|xx7X@COT~OWd_AS(6QDwZ= z!~90VC{zj+p*W+VAp{MX_1~|i_ayUg@nk()3bXlfiJYr~(rkBDV-wtm0GL>m7-)aT zMogta!YpR7Xv|KFVSjhbY1y9N&7j{0}z=;3^I>PNP0o zxq{3p1g6r%Yr!Ci+eO2jtVj{N?u(qJ#7wlO1g7XjN`fybx|Vc_uHCPFpiji4?nt7_ zEzwg__aYsRH7bjv0qnx8gFp52>$Vi!>qMaVMO7YTwMbab$<2j(paU4%PmCz?#2r$V zJjRlkS@JWgY|}xRWKupi?X58jAzlpONJO?^#>+;@{Ci#wjy z1L*bFIUZAoEvaWw%p63PdBJ>7jNFc(k-OYSlBJ7f|2_g!2my2VQI!WuiuR0 zun2_VP{=31lvkOLYO_J|uP9S{D%KVl9W@9nnP0qwhnt3e=5S-*Y%4G1aVq`nD`f`JUo zfOiSiw1G{DsAY=;OjqtR8N1$0tQAhv@ol4u`D+bNkq{Y)lxWCDVl~xLh?6Z1LL=a3 zn4P^VUwxR2JP)XadXrfFf>lL;{A6*5ksk?j!L~;J8-+25#&8{&C`}xA!$ceU(1tut z95@`WfMm=Us%B!W1;ts1Ck-M@*%2^Smr&zBym~#Xj~;*_Nur}t|U-~NUtnH zM^~Uz-iJ^ahPCUj(5kL*{PmC!&6RXP1iDb10g0^PqK(d$!vxCn*lrS-`yP4#y?5a{ zU80#nQGX9&oH=BkNW3go5Ah4MPmYvTsC87J0c6n`0WCT|!J4l8oyh%Y-ZV0o&}Ef6 zlK=wM#~A?y05O8%C~1$)d|u7#G6Jw9;r<$#q(V6PK%fz(8405@zY)^|?%@{9a&fXa z&I7=t7NGKdsG;_&c30cg)J|PPPYJ4gFlTEfTucQ_jFgWAdS5PCAQ-@=dWpojfiv$n zfU=U7;)@D1XVaVCjQO|_Q|O7awp-JE5l67rwGFKUI(9C2G$_%dAP?71@5WT=fY!H_ z=}4k^^F+zeBZW*o_!`11xgKy5R_s7jGom8I)raj?%YzHiIzt6GNjyOr>!Y*WWIg zx(y?JK#*_UYdkEL421DO8+nZ4r)QlC!xbo}kqduc`K2P7r69ZkiWjLKF35Hx4kKTO z?x&6qp@;r?%|d=${7t@$DvTcGNT7k-ZXH_#C=qGaz~M%&@ioE%qF(v7>|`$^;S_%t zw8^0~^zER$hpBjyP-a3*u8W~{bTthxJ$GP0_uM~Ys1s&pqGe=ofARcvb!O}4;TG)b z!1`kO@Z&E4=sm^_143D2|9$>@9G%7ZyCDgB!q|$fEZVDNkt)GyP@iEfV8axk0iO6+n|#$you- zT*>5ArP(J-tq^MCMm-EKK3{^yNkS3<;LH0wwSKslO0t0MfnV0GV+MhuU@kno7A}po zLA1^hwr_{vVvhRNxW|`0Ii_6}>jc!(f$Nfj;`V?*kkSe?oCOs}Np&K|w#3T+C(z4Z zXR1t0`CDzWY{(2KKOC?SHkhgy5iGO-iN;A0z8q#rB?r}W?<&J8jL4AHSZquWKv5d* z#P*>eM*)@IhjX6d0hT*bN-vW~j!Wdty~v}}0ZubhBq84CaiREvoqc#uIyf$P$_xnB z=#vV~oeVRlV$w%!Act6dV#`DXC%L7L?_kF%e8DvGCZy5Hdil%GWP-Tv1~;@`RA(|O zJm%-+^=x#&Ph!6NE93lSuR+ouuuJ644(#$7uix7bCm>HL6cFL7aw>Py-TNN)0hpPs zir<<2paqowlXQI(S`rKno1OZ%IAuaEHqM?bOH`I2Lw=??LB@qqQMz;vCO*rp{s+#HV)BVMvHc=BB~A9ZYGY*F%K8<%XmVNe)5l)I8=xQptkP&t?GQb zk3}7dp0{kzFwp7o&*HA87nDLDD5ya|z?!mlJe%l2RE*s0pl{eX$|d!klys5E6I^7U zGmmH?J~5gjl%7i(26$TyH1$_#nsnf)p)^kUC+{#-YXHS4pB|IZRzX zSWO903U~gg($@4(k3gjP0%i+GHoVI6Az}T$9Mml}&jBcqb%~MkfN_a&Su@zL!t&rl zY_>}7h$7p;sxiq2sq*g>?-?}_m6y_pAf54l%OZncqksRD!UV&#@yo&ys*7a0ttA<0>14e^Rk?E-)7|Ka8k3LbkFM9;qiQQ{6Mf@A`d68#mkUB!yHBIVI zV<#My8LLWsC&%ZgYZI92<@xlPVf-ooc>tYsXo?=5*|S@Hx4M0vndGN6+LBOV1!d9U;Ls2|l# zhH)wZoH=1M#Ls6@(yz$(E)*bcL1KIm820oraw=?Xwgqtpan>PlC~VbyWR#hSO4h>g z8to^1qJ_tj&h)yBw`Xrb2HgHV2t_@SJh2d~f2!;FNjwA1B*22DNA) zNXt*WLe0D7cNxJO@Iw-~Uwrkh>uPH|z2f=@a3lIB;f~~V8)@FIT zM{@GG_Wb(t85A@y(vanadd~`v&%?v|=KSxu^j(*`pl*2oP~l8qf1i{+*yCm^i+_F` z_J@S48qayXGnumOBX9G1SJ#>4SdzUn#WyHk+~7^QpL5Ae*;c^&e3C`!aQ8qDxw6aU zmHXCUK7*er*YA9@!=;H=;AyOr)5`Az*x0$c>MP{6Yo|PJT%k< z>a5^$r%-);LEldxWpYyybLeg{<$QOH5%9nqNO~N|=`a*!%>1Zz;PS46WHfx?Jft_i zbKRU9CvEnu%ih1rlg$f~R@fP!JvP00g;q2$!4#lzVqRolYH@?4)urV5QpVv0uug*_ zFs99A>GlSTg)@cT@Xm|ELAQXKcV{jkq!+}4)$^pd?O6)&o263Vq|uOEB9OQi8L-#`Xuj|sSj~#5SDeT zvMb@yd2epuB+Mxp2LO9?HI$87H^%io$m+a9NJd+ZKKbu`@aeKC&vSZ zU!^gxO~rfGY#PSAKrZjgEXL&tm8ZM@2P;9Aohd4gf}QhAnW0gEO4RUaj?hFSuxTOD zI0Ol?y6mvn2oS#_EhR(%M=P;GUbnGvV}lMZ3CDupG@nMF{zQMFzBLQN-i#Owp$gsl zP1ghW{1Ae`VGn38olm zWz)xntTd0Lr~8?q3mj?7Yz~o#)f{77?eI!7%~0xp=Hko{6hO)O1{Yh4RJfA>wixav z!$?LXH^~Uq?3|_vi7+o9WZ}83l1Zk3b(6zCq3U-z5}k_l>dl zTd7A3?*!J@LO}Sx+`eSCN>RB=4RvgLDoZspWN$>@@T-Y;*AcL6MQgA|qNUZnR6z-{ z=((ey&kwAG_F@9$?n6b0sP?-GOJkYMYS6GkLC+IliVn)EJmp=pBGffZsu>49wc$ad!yN_&P5a1`R%G@p+HX|YTQ8z)3Q@PWEoDu|m zahFU)?N2z=^G9t0KY21n5p*QQs`)sve&xBZ;1@(Fma{|wPM|Fd@|t03d|DVL4mE@b@3wXfG%B#kB7=jN zbhNdDiv1I!Tw~=Sw12kUq*dDB@Oty66nu+N-rOJUQ!i19a@OYKuETW{#Wqqf`vzm9 z2cQAuVPS^)k(_c>Cy-Zs4y`eHZCW+;K#VX#fTSoq(9BRuYCAg?{`wF#_b{uYJB~02 zZy9_Wp_LmEV|4m+VVhR$O&qUYiO14Oc=HXA#-GW+!cYuwk8Va zLs2p(omWy)S2#)d-Gs785b?yrL4cs|2AD`XGssVWYRMYJd-u-j#ys}Le(n)tfTg-u zmXEL$s$cNm?~W@ozQf`kK|^ukMr&S~@bq5vgH`#^)ZN0XW!TgyetJ4N(hSL%TDiC4Uv8ju1UN7m$Nw#w<*_Vly{tU(0U)CA zP}q{lIy8>xrUG{-*+XjgAHcV=xb`>>J|pi(8c0BmVZa{VplWAwUXvH$8D+a5H_2>U z8U@gj5k#vpmDI?OM)+>5;@c2*@sECN>&C0WWv zFEVUKj)lx!XB~lr>$hR7>;oC|16~^CQ$3aG7vg_2Pvly!D(UFpV68L%)KyxXTZ9)o z8rYL8M+!Z$&nscU(+zRrZ(52;8q-Emxg|%>u~irE{E7xiXzv@Q@~ShiQdewo!LqAGOVNWYsSqdwO|U^gY)Mk9Qi+Pf25_QD*uXL? zK=NfNX*e{*vX?X_8gG`SEVFW*IWS`g(a^S_=xA41wr+Xxn30dkS$gOg+biilzcR_> zS>As5VAa$4_@^@S<#iljCv63d@ee-n)CmTKtyDc-A6 zZdu;_qXomVK3ZD-ms}gZ2GE&!%0Lg6d;y!+_-pqO%&Q3I3Y$guBj0(Z8f4L?Ky8ib zGc|*PNVYYly1r?6LP5#O!d)9K8{awP;a*FhBsb#!0Kq^$zs9ZukaVk6sne=BrlvPT zU|t!nH@mq46q4desiHU2TB#lt`{sJmmKx0V&9$SD7voi}gB0N7wo=&o=E_okh|Cr} z9ycSmm0EAp%dIJonND^qF*;JouDPxiFS{EV15Kwk_RTf2zRE|`O1-X4tMQ+uJm2e{|x4#lO($d>i z!hPt5lV>4BT6#8G(!IAkg8^)R3u^Wv6(a#DzAAAc9R~A-8`@c4-pVI+;CyQdH)|**)*Jg02oMS!M!)` zO{Mt@dq>N~%o7CD(%y4(e$R@}u(FAL;K?FtMhf7P>2p|6Q`VXy1(6`pb+!aWLSHyT z-}!PPh_V)ZyZxBo5Zu_Ac+rAOYUFsnx(aCS6gQXSNY%;`6d@&RWeL%*nO2r-r@>+0 zV$u4``Qm+cLmfj=hgpYzT*~O0p=Y{QN&-$Uv8)^>eidQ<@;oXc=TCZC!a&-HQ*dx= z<&&X?0yi5iWilQ>JMO{Le4Vo(X78Ls77F%a=PP@93_>oM(Q-U>+=%bOEEvm^d%fjw znM!4k#AiarFMSaUAJ}C5!~7Thm7A;M-%ALO!Sg|65f4RwRhY;MX8&3;f6VWi zTrsg3oAd9ARF1Xt;D(-i%Wu&l{U>t9lFHAyWs=A_4%Fn6*$_Bg5tV=MxkXnBV(dE8klpF{*w!?T z7ty=jUH;?K<*i_UCgiuaoz%7MHVD4%%-92)z1;PpXvw18{r%V1TT0+tnX zbN|bqa9*k*cU|?}MDwPoAHuEoRrra%$S81Rf|5VCo^liJNJHN+(`Iqk@C*3<}N6tOFr- zQ}b`)Efe30(7GT^cNxqsNK=nv_-=xfi-J{#N$^w_rx8U^L0mdSr-GpFcOaH`X8`Rb zg{k`$%yle(%7?TL`Cm7v{c?r9;xg^|6ZTEqICZG3@Ct{V0sQ`7c(Xu`2-TOF8dVY2 z>12HVt|*F5R)bAW#QK!v)4^{7;3j4}0cW|Pi36G4O)`CmQ%UKH3nJ8Py~&I>$n9jJ5k9+MGyRuAg32k@T~pU8Pjk-)m#i-|B^P_rYV2yGL&L^=irl z5k@4Q0~^Zq>)pEJulHfFfWS6E{j`4|{`)`tzVCdA)?`l;cIPf&WMJQ~>N?*+= zlLoDl3*WC=McJs4Aor}EveQJe2)#ZDS-j()*@?V=vv*Fvzpyl7L?M7)lU4}s+_^V< zddKg#m+U@ZB9q{f&Ar=THnAk4324$+iUc+!P4>CK5n42J;Ql> zoO-eSF%hvc7*)7BZGEcIA!?B7tkuo3L%2E+6{gSHl)2ouA#<{zu5|9K?GMO*&KfvD z&UV&52?a!U(7*|A4IVUbDqAB5t!8->Zme2;0C7V>v{z5>sOWo0bJ~L#|-1F zwPw;lS!YCY2Ff-g8VaJ*da--EvkSbzvrH?{Etd;fbz#1iasZ&bG9noV z<&zN&1yx!zwj*MTR6-5z%BCWH5x0vvtVa|<0C!^(0Cb7zj_3RQaIa&0i7A#l*m)LsTSH z+!vw^iG~6_MWi&8XbZEP`>RbSf208Cj+sv>z1)HF#He<@79|00D2O&J-ubSR`I@+` z)5TE0d0#>Xbohkopo0^;r2HwJ_vlUHsqzZ@WIho%kE^wVfbkMD)_~}d3d8D`nm*C! z7$#Qw(J`r0`lU8;?z+x@!QOutXCdKmp!)riiy*j@SxN*wKVoqtPG_I;c$zbxnlTIJ zyrpJdf?@HzBD3Joz7m5viW#DOgFUh+AGp(4d%<*YE3yWI>EMhZfx(@5_r55(f9H(( zpZrkH*d5gdft!jo64nPb03%WZpw?eRLm|DxcXz>fDe`ah=fdEBQQlYINyl)KeED6( zL@!B3c3S{<>M}b?>dbOz>JwBl0nwpUGEuko3NaK!6ZWFT%!_5r_8tFD@8A3@?#xMj zdS~K2c!UqG;09e3X>F)fF>tG{4Tm}HIu-u?rw~Wed6Bq+ZIcBc1WDrod={9ptK~1xWlr*Rx7R^wg&Q!gb7sX{S z4k+ybZcdfk=hfwmNQ;3RQe~g>s7A-VyVR3*RIw|l1y!-M<5r>8BQkC%SmLsfcHxau zxg6k@QDUD}l37Df$Kc*h0?B>oE~egCT?y~qg+up%3-0%S)ZjBZtiKagE+eQj6V+It zcjT3rCzmcJc?M`s8m!}z<@I!bywCRUh!icXClirAgEd>C8Vjeaod!fukT@#3Zpn7P9K4*oB0JcidJL-V232HG zjRm@h7H{`|PYFpM-NskAqOP<#dvp8Na!EuYY2>1c#85A2ha9X{)DAfoC~UX(k!fFW z3Yy;3eyqT)0jMa0tfH*Nk}^HTL%g-%NKNDFb7-fA^bk5c!O-WTU2kLf{dPg zO%=3~+9$T(3|_(46-@I>^``o2XYVZ(8#oVd^V*Wf)u+S-&d^KYii5@KB2%J^F;MC$ zLF8b6wUi)oET|HUmk}3BvJ`_ps#>G`JnWY|?DPi+Xtj0V+nqkNfe-=HFMKSJ4h&he zoW(nuh}6E}h{3_EzcrGtaSj%k#kajY#6GH4BkOq5txGe^0!R?GYjiQPS+__RGZyGM zB6kQO5hM%-R7u);hi_;6TsnVI&Hvnz9CQqSo;E2{Kt&fsV}S}R(&m*oR0uAyXi>$1 z3on{v2m)7KWM0=_+B`~}lYy$cScL3uRUy8=M~I@ul8b(eH5YwY(Z%}U0WW<>5cTTK za6T^Xo{y@*uwVHGujpW*>M(N8R&=3eP$dS{sQ?vQP>lt8+bB2{#HI;UdeO8Q02O6_ zknMDf`VUkv(Yp`52`RfzA5=W?JSq=VYynewl(2Bc7EP%!s-P>lsrdFzAF zM8F?ZG4VWy0#sB%w(l(}Kv0=PPyUsgmO1m6WI7O32La#iSCre`BIimUR5(F37Kn8v zv)#o04606|DSrl3EK0#WL4^g!DF;@kT8EnJAuFRPxrwsZqb8;4!Xix zIszew1G#&*QcCFB3}BqSH65mZGZ@G}sB{midqu8@gbl=hWJpjK*-U7P4g)G`x3&ri z^8-~W>;P4D(KOfX0N)eClrG(MKC;;Zi@mYib%vqm&bm(I`q56rFD}IeXh_!)-#ml7 zSI(enw~U`A2jV|67!@OdYsNkKUswEJze{(@T5YA#W-kp`GYw@(-c5sl2SR@q)lb7z z-tCJ2$ac8J$lm}|%t194to5VXVd+G%N!Lj}p}QKYtxvv8CIY|`4zmD|-kgDLH}cw# z)@ZfacVp0E0)#u8Cj|Ji=NQ{ve z393(nc}l)QrZiBUJ5rHUsD6^b9Br^cYoQjS53 zr5poTDMw21-|2RLGB0|%(VX}sUEUO`oCA<4M^{udXtT&;&|;Ct09NEtE(0%!bLdb- zAZZtK3ZqpXZN5CLXYM)P=X}WWGFM*)NlcDX1!>CeIHN5k^@eJ1M|H z)KiPd!D^{Ro)!IWR6lS_>HjHd2_iCj6yQbB2dT@+H^hLs60@=7c)edj>@k4!EIvSQ$a)z6B7j|Iw#Np1Kv z)!oo48R>6qOg1o2!YkQ0P|{H*8(OTpC#{$)%KpHflE^PZXJ9E&t-`?%3yrdzP-u;?YCAh)rRh1yeg6P$s_=?6Xlp4M3{IpB2JZ1tJn*zLl- zC+mZ~k7^9U?(Wz)e&=|;&%sRHN$}XYcb8G*xqep_%?sB4t}ZIuqlyXdx7jyjzi!`< z{s4Y;0Tq_~qzIgk68`4$G!vwJ)=Mr-+4ydMV!67;&r)d$T$Ku{ju#1}#qO8;pehui zu|Sn2KgI5SWYt8Nqkt+RnclmLcg`D|enE|m(Si?hZ0j=Ol3#7(vL&fdN0;bqYk4{bMAhCQ^gycig|kL~ zgi#3U=F*@BGwQhqcQy?tF#R)lxzpd{V?qZs>N?YaX(ja2WVx7mV?JiFI>G`mDnb(w zi#l-oF54@1T(FRg8qx%*aQjO}{399QkpHUCyIsa!;Gen+F`gdh9p9iGDTdz#z=a!6 z`EQQG@$TI9{9W$#2Fq~FqTL6NJ??&gUfqZe-Eh*o`!=8Pp}FE_BG}4*@NVgk#USpC zFWQ6&+*1LaXCl5JxGO>I7KYR@5fsf07tNhI5daK{tyWVn`&xhbDGWqP6tK*%6 z>#hG$3E?ysk@gaRAs&cc5!J565p+;@-+K2f5TsF0y%QNNDxW?=VL&_;BdBP9%zP#< zNntSS$tXN2Fo;`Y0miRz!7}b02D9bd=Z7QWHzm&}UOb2cRF3g@7CegZ11U6!TT~A1 zm(ZJ#LxcE8<cRf_P2kurAm=S7T+sq*poEg8>6Qyp|*Tm3qNIFSA5LLA115 z0wEWUH%UxJ@*d5t$=$bi#?Nzq^W#U!=QWX^UO>U!r~bOzf0KOcySs12-z^O0ZvT4A zzR&}Hr+Bk7cmte0?CC?zKRL3FScu+~`!|mX+To|)hJU{-!-g|zFqT0lK{w9pV^S>8 zw~qwPhIMc<>veg4I=VVJ9q}b|=AQqXcqUmnD8fGxO`fu!eI-7<3p)LO&`CjW*=kC= z&8{%?wynSjmE*WG@7@>LKFJ~-j?S(|7dM|q$5(1$Kgv?J^~%2DpH9TMr{;6wPuS|z z?Ujl!ZiS(j_GDW6;!e7-&^!AYg>nX+I9Md>BGxTTFQxdzZ4k%7JpCC#2D}znu)G45 z6_|8!C9w@GC-{v$0U@n_MkGj6*0+tlo>&~a_?D>ompgl}5v+@78BobD8N_ilT^qC6?B>?HzmeB(-~j?UDB!30H1v!@r2+yqMp-C-+1YVMezfFQVJDutG5>=( zDpo4OmW~%WJ`+3>amX*f9NNU$*&)RZH(Y7l%GVUzKNjlVUCZcym&?)3=Zn$t&E?7e zj=(1ziWX{-GN-(e{f3&O6b^Z0NI}5OhvnG%?p*kyLf(>3U0?s#ofk$i=scHhvDBXf zV0%|kl0arzg#s-{@RlzuFj#^$Bgri~yR0JQ2wEIWj1_BK4BNe!2J-Gvu(8qH<$oqy zn-hxUXGwP)oS|TUnH0CTEmQ@^BSx+<)_2hB_|+Q*91jRJx5ln>{Abp6S!>M=C^ z9@<$WZ+^dmR50S?z^tntJ-M)vB7lbqfd9^fZW`1X0raeE@8Z zSog&QJ`zNA>xif5fa{H&AiVGWbLo40eU}R_W?|1=c)ej1iNZAQB==nT*U`V0e7xfI z5Pk|cZw_*Q>Byoq>`m{K|CR4s)H@wrUJid5-JG2LI{b8Ubn|(1ae01rb98d~`P1<4 zqa*%>qtWlhPn0sW2)%PcE*=%Ie>wZx+4*m0H;3n^r^B-&BCrsBSPoVv_D8+LB*Q<7 zzr^0GH#|DJ;P`KjMwf>-!_&W)b!>l2_YzYB_2_hec=CxFvr+FB+1nc6k5A5qXNM=l zPh6;v&&y|_4d`pS7o8g5&xWTX>V*fr_0+)p`Q!N+J!qp{YCv2r&!w!Kj*d=-Hy^oT z`2?5?PG&$aO|~frE54NKL|PhcaIU6d@K|bafZjjoJqU!6dmf@(TP1x&JwlPFl>zxi zmUcjYheFse;dJ%9pm%aU`Zi_@;Sx|y7-5_w3ZKIe&R=gh9`ijpVm=?d9F?$`@Q^a- zy~c>@Gk0vMmZlbqEN&=-$~U`;AJ|J!tB|d<%SRgdI8In+cRA3-C2rC#a zA6IO?IPxsK+BitHt`jIt0eYuM^rp=&4JQ+SZJLOV2-YP6m7jDQMi8Rp9;xjOq+_!*U z?jg$B2y-4x*sOOd{wxbLfC+#Iu;`czQS1ZsEMb9k!Q9EYKYJRg&wdC3O9Nb#3IV-; zN?4G6;nMXvWOo)Pl?&3Voqgy^VH{}#9#x3hQ?4o18dWv`Q5=L^jCz0NU{ZT`sXk2w zud)?L!&_}6F}TWBAOWZGlpaVNtjZQ(bqP`;_F?JGCUmgs(zzj25=3J!mbWv04IGOn z4ksUrwwF0`B+z;X=&SJ}^d3a%hrXPDipQgwle&{RM_*1)|9*3Felz<0aP;}=nRcW)cG}_B;Jg`d`Dg-8sx7DFB@4GcwX`&DC}@_@`*j3@NZ!C&S&9Bb;7z!x zjK3^8+ZM}!!T_!Y6(43F%W*e9r9_knB0Q^S{UHvA8Ez-1JbI$eZuY=Bt27z$&Aop{ zQjc5C6mAlj6jGD3=q&S}NT~sT(+^nYx%yS)v&7_^X1z`)+MHJQJ35g_ieN+3{Ew)II1J^$Xx!c63Um8%19d^ep3 zkN;wiW7o#fj9O7}^EUCJ-r{nLmBrh23UU~z+#XPWH~WdgjaN6mju;B6mjNdV`W6aq z+GaXY<0RB8{>f!w6ox^lk5oPkOn0b2o!xSWitBb3vyC&QKJC0MJx<`|#N_s?XoXeb^pz8=NH9EY{(VGxagS^cBxk|g}IwSo1C=E zFNcTxuU&PKFFjdM;85*OWVk@>>4=7cYGnJ#!lea*!ykr|rM-NAl~r^Std3F@+l9J% zf%?}OrT5tNX3LOqw{->UI1J{=HF7iJ+tp{ZcPBmF4o#>N+~_X-k-lj4j!!;~Zq7en z-i$6T&M$6`&o54gS6xHMx_8fFof+HNwp@OZ6M$NQVoD*@c%XK8G)Ds5`ObO_k<){! zoS zh=wAIk#H*mjLU$U_T^6`-`Hcx?93)>2D6*FK=LI2s!rq=KUyxtTQHlPFIecxOCR)x zhnNB;Y?4k8?pOi#0Z#O#l+qAW(|P3rB@0BtHRjblAcX|Ks0z=Y?}cTtIV=0=EO?xON;r zSieX|jvF#{zw>on;B8n^l!t=`4xI>SVy*5Nn+TpqXRh?VAah`%`pby}=Rfa7xgE#9 zU}Jvbv}yQ%-VAhbWF>*_@y~`Lk3hZ0&Q~uO;xW`yq7b=r#x;ndt?>Mf8Ht~4Xg=VZ zzzgSn#F+Dw$q(r$=c4NzD%F|&46gs5 z*;4g?LH!)dOcic*KozG2wkr3Mim+8BS1k;FjNUhHY!+{JPRW%k51**oq7UvRS<>DF zJ|IMyQ;h}H&?QO?{zTS?Q-DI1Sl)r5Rb!Z`AubTltj54Jp(SbzvpV3YQK8G-gd)St z03S56Dzf~nDycFAelYPT(aU=uRLn{>7DaS_2&X;ateP-YCcea;-5G;ZbUwQlgR^py zIb&dI&0;Nku9MoH|`s|MneK42g zpXBwS4{lCs_9L?4^@bb>P-SkJ1A&VhqDyf9R1O5V9M|qZbj>do){7j%7=v4^u8pyN z{fC&{jmLlEO9h!d2G{G>4gMq7xPCH!D(+y_tJ*~++V;U^yEZogN!Nz343>y` z%RPlf;4{^IVDKh#rh*PxoV(zTyAO#~NL9msPt5i0ll(nNt>Nl772Y{ENN}7Z(JtCh{d;8B9fY2&xRG z+Imb1>+Y^|;{TIxStg0qdGz?YaTRGOch?~~nM5IuOhyiz$0_r<`~ARWfokb6RcY7~ zeOsY?B0q#OjB8NiIPcFN_&v>kn-pJ8kfMPNbY-X)+y|Bp8yP6W(hJ>Hr%;e~%2lLV z!zy(W;zNsUT3pHY6%*yk;Bkssu#gx~^~QDw6v;1(xmA28n{J)zVeD9#JR=Nw1r@$3 zH47DZGm6b5nVm$IAh*h(ft^a7Y6$FD7`;wI*MUV?ryLnO7DgR&2k0t)^zQl8lh9$t z%JCZn|3wpVKTz=u;pB41h>KDZi6%k~u4q=GFTHJdlBcs+GXQ65gq@$AOjiK@?=0g! z)g(}i`+1%8vy*Ka!9S7jeZfCf(3^pOr41T>RGG9YdRbkH^gmNaFGKOz;V`#*!u7s# z@1xFk?^b-?!fS@z9E=@*OFtU|9~bF>Vhmaan;_9tYud>!IvqBQg)+vk*M}CI3j==C z#7+i!A)#^>L1o%iL!*BrzxyySHOf+AmFkqWkL#3`aB}aib?kFB%v$k-mxQhRK!Vh| zR6OvJ@Et;A`v=K~dwwed6%qGH|F!f&b{6<&d^j7Sm>`pfvOc1Jfjvh{FML}pAj)Gg z8WBi*J1ii`t8ht$(Wr+S=nSN&g>o(nz#Rcjqpf~eY8od0if%4-yJFR7a0D$guH6Nz zu))!%lf#h}QCJ@VYaE2E_si0|WU&ahSdIruPhfgX*_w$GH4O!2 z?l;*Y2ys2A+@3_`8-tq4NJM+U^q=Z|spgPwK)BVZ+<;_%j&Hq#Lsq#5NfsHP1rP2d zR&F^p$F$(VtySgzQrLbiI9L!3PjoehDDF(ZmTVxTEKd=Pqdor>ocI2|j7ADECbHv) ze0%3#iQ;fMj)U;V=OZXl)8tVi3i3ISdC?890>ks+om|$a373H?O7@vqNm55lkBk=z zoFQ+m+CXf7ZhJm2IMJL^cI(i@E3GX$3N2zb`S2ud@D10ZI_LdvIm40g;-F(51tql0 zczLVPawk+BI4-7aqB4fXS2tclihiV|Hw}Ci=0x+d_ci_QBx#S!-k^%}bWp(@bFMk` zAy7Vo9ecj(k3DyG;@<_GqCgrIUZW*I;k^t5*i$}#i2G3_8nccyYDNXzXimVuOP?5V zVCp8LBTfS59WG0&G|v1h-R*2`g;Hl_dsWG>I{0?;)Q7h~YR_E2GtQk{y+oE~HI-nn zLF=8|kdyCCFXFbf)&?Hkgy*rRJ~BIw=cGcQ!`Hj&RaTL}o*PMu%=F52*9J%5d?IO7 zsB8*Be{9Yb{{j68a~AlI>ra?d zz5fLMggHh0nfwV&R=G~e=ApQ@CwbBKn$0XHhJwa{ zN^R+DaN}lhI(WvGDu;@$EmkE}uI(Z}v}0zmj#AT~xpR?UKNR14y+x$R%{k#euEjKG zi2n&Jra9gGnJlI`iySDdx4|t?R6hi_WP(~RXS{tuHD`eT2?W)g|NUHoig{MZx^_~3 zPul%Esdh^{V*;%ZD&;#1m7fzkP=4gdVAc&LA%?;PlXiC%A5S3DcUS&c$l_(_M@}3r zi_2Sas4%yMbw+6?CsIA_K;%AMLW+ifS@%g7J`|`&R(_xOMPtdL2KNcvPRoAu4}-;1 z8^<5qiK~)WiCK_|7O4Fe(NIX10Y2D&9SixVo%m^C5HC3h5j1>>j!b_q+Oa;}{#S|Ro*;{cIu7Pui+S-)54 zc%1#VrHjAS7FI&MOE<(wna>!#zY ziFDAttAZO>6`y%r4GpN*6xCQzwOhizi>MobH+p*E44nzPb0zz_EdP$gV})danz|3n zak<|R+-bHop$&vd@@67sfC?;soGRGLca9kns)!T%G?fs$e%A5kiy52q@6(^8N@IgH zdrFQfh(8KZX$9{7l(!cVi`Vqx8)@Zh5*C{wQI+OUo(6c=DE*=Mn55ZA>P|<3Be`?E zbv5;(ga{;>2Fn>YFF`EG5V@|Nu}ROy6o*}6j4HO4FAuXpF5nlhDPJF?glYTJqg|}ZK6kkxiCDmBZscpfHj#A<) zc}}xEb&fUbDWSSWH!1pmQRMYG)NQ@8NhJNmbE;cVv1Ea|HOZ@#Wq0!nbaD)?x%|Q8 z7~ZgmP>w;xmsDfX>Rnt|1KtNHC&z2TKb^#+o=NQTipY^gH1ug+UIlJw00iFT$11PL zZEUYx9oKY+T3%7Tbc*$^kwl$~4u|E^sa#aAoF7Pp!Oe6iMYzR(8b)|Sokm2sg32|C zYrdN#S*ROTviKv3?Q>{eP~{=fSnz%}K#v!*y5P<>DY3l`f*EstXX-}PoCPqrKdGh# z7cG`Kx2QpDI=85?o>SAJ`o5%{g$bLnq!u(0+1L%a#w{0FVA&eJC(Mr`vd^JqK}CK< zW1%{_P>U?8UN7f=-D#;cR!dAqgu;Q2{EXWk7}&v)VrV- zEIA?0a$>5EvPxQY-lbrV@MbX!6DgL24JD!s=OM@Sa`}-&`8o74sMQP6Sf~aq)S_%I zk^|`DG*R7G|H-c)=q$)AzH?DapR?XJexsOzl zcU1LS0`$)F-IPoK2+maA_1Z)9>a8KXpf<%4=x|0^Q^$tV@A))ojtlw+^>?9xw3>rtL9s# z+goyHo(d^A7(nJ_f$PKyyeuR8Fvj0P!o?_82tba73C|J-)CQ>fFp`8b;Dg)%RRLD<=)ePa15j;P8cycS z@YSM!281dgBXZ*g1Won8y^T2!yOd^S9_bTURQa@~&5cA%d>o}W=6HT$IW z@?ao{B@zmdgIgW=)$kW8pqRd?&($ZqK4lnK@~ZcpE^YdYKvAjnG@$$So1FnTajFV` z1j;q2>mehCs@$wJ(_`85C+u7AMEqHDIo}61f5tSVZltL(!k4Ywr+SWRYK%Zsxk2?D z*wh$-rE+)bdAdcfAhJ8u=`(+0Pme)3iC}%^;RnBNcWPiaVO)@^a)0WTbsF*Ct}q?3 zXdHTrI0zxVh2c&Mh-iUGoFK}%*ZI1gh7dzRpT+dNwU4OYGc{SK>c${$GNS!L@_2c@ zHJm>=9~iUoZlX>gm~m-**8}(QVIu)4m30d4FsK8;@jZ18PMRIj55$V^p#!f z53^wW)!FBlR7WTa{sWA~4xv~hJ8+l7&ngWGUvNx0Tz}lICa_O80dVGV*#xeJzubKM za`|C+cC?%GD@Sp3q3{&7Trmy6!m5or8WBh>JRqz9M9*+ z(`FKzZp4k9Lq_1w0`duO#xJ=U(#-(f6t>a~^4`kL2f7*5z1bkn9Dxy( z&fC%G@-Vxrj^uk!h1L1LvYsiG-XO4v>p5ihwPX(bd#UC?U>KFBSF#a*@|#w(Sh=!P z(;zU9sc97Ng=rdey8&hhu}nibg(bToziBm%mGetA4T8I5Y8u76VVVZvZV+5E6L+y> zKlHb)rjl}!sU|~k4b4oZcvp%hL%1^pw^ZR+%8BH?%gkK(cdh2Jc15YCL2!LtO=H8S zx6VUf_(Vvokmo@(GY!*DS z3BR;CzW5oUITP6VWX@~vtHkrV-g?{byP4^_=9w<0floG70$(71nd;iLDRFCLIPWh{ zt_nws`Odva)Y9vDzt{7Qp60i~jA)_+enK+Qw7+2Y73AdDd=WqKUnqY^dN0Mpl78qT z+fM=yBAI4lf~}@k#Mo|cpI&4H_k~$-WA~nFn(f`_!K^{HE7-+oc=~~xfZslzT#YV2 z4-ZG{MZLa`9q0OgIuw8S_TXP1-bM_}8w7!Uc7DbW@8_$(rz2(lNXYePQ3Q26D|rON z0EgV%iH53kyA}`fNryYr*OLY>PtE~sR+0vP_Ps0E!0xlOhsdK$MMpg$&A)Q{OYTPK;Mdl%>i`H z;XEcpxp^SYrcL)w)u79g1-*Zl%kfy~&!hpi7S*nQW?M{ zu=intYZMe~R3Sut9AHa`I@VxjIGqGC?NzfP^DMQ!n~>sqyQM) zB?6g$reGDFzkAnPU4h@apa}RhG$^<+q1M1U9ztm9^7kQzg6d_P1BN@XaC%dbk^6~`03w&tbCLdG?0#jEI93JN@*WJw@7}ZT zHYQobO84P>R2DA=Ib^k`lX`B94p-)uk;rp@>7%);nsi5|>#w z!I<~$zB^u|d@R2ioN$7yL^c z8AKET*zT_L$hS9Sd^<%`7vW7#*d6mDu1020d?Je{DMGRqSU%A6xh>q#laj+BhFvEL z#4j1UKGn8hUN86z0-qzD1Omscf-Dw)*oz~HHSqZlP}QgQ!Ng+XBTe|0?05QeY1Y>i z^;$|?dU>8Ws(W}JM8}X!q=3RUnN!j}MSNR1m2GZ%rfxx0WQctb69ms0v0F4w^ zBz6+|bs%Y)UNC$=+u4o!ODr1nMN_XQ; zw^;Sulf*9HWggblN;-|;cL8xm=*bx;m3Gyv4RkP|h^XB$n_Mm1O0`Jj+o&1c)gE<} z7d2P@ll)YA3rm}D!50ei4zgx{BJ8BV2o>?aEDS!l5u0#ztt_9yUZg&Hk@s&_ZuH>O zsFe+k8w`TKxZ&_ZlB?Gf!h>vtm;6MIwqQ%UMMZQV4V~&6-vrx8s zcYJ*D*Pi^=j!1F5zK(vjwqe7aH!xF%_)sfe*!fO)ZdPKVjv^-Oxsm*T{?+{dvG>Pz zi7muTsV+$zW-NRNPWue~F2UIzz}pdnnJ`LnU*JpAV(%mn`9xLM=a1xf3%TATHde|% zMQr@GBCoM2H%;&b{kR0juUaEGhL7}|1jq1%>Bb0-kHu)u#&Fy|3o{L~@rsNr&n-@! zdfozBy4-UbKI1~PP1XK?(y$wsz@{!G2fZ!SMor8OLBwrb0-Bmbp*GPm2sM2Tb#3xv zxDmyWADeZ)SPiR+f4MV&HZ-i?Lm518j5)E%L|K^-ky{0d#WzETiU3(Rl#Un*&C6Nj zbeFc(fjYi*O8^iMm#RQ4QL{>e^I2}_rV6sF^a4cFs`$Zyuq=?p_14S z0w_Vu0Xh`s88i{P;P#(v95*R+6$8=vomxo{+0NAO9!koIoZ1V3bxSl9M$=~`E=jv;Q0Blavjj3%%o#!~cVM>JXOKIH zRUsM*nXsO^8M*h(3LWNZP*dp4bTH%+M|GiSK;ocQrL4<2bi7)@7*wJInDx{il*WyT zES;4>={Qh-d3mR@SD7_9jRS+x-h~&XjZc<^fbE(52>2L1ovTnvK$-xmN(GVpcIf(n z?~UD=%6XJbnEw&iSM}4^RDxKAsqJUu;-?ZcgK#8NgpABdA zO9z@5JjRlggI8X$5xn-rh~ZaZZ7YVKI9SFB2%}DajJ_6Uckwi&$u`bG`~K2n1x-{{5IR;ogZB@U4}`?$e>B`{|WTcw3~v7Y8h(^y$3#!t^rLI zCZ|I=Y4Pb8RbFSiE5CEKpEiFOIU%?PFAdlsM}}+QeAq5wv9QGJkXYc_Il0DUT7BGq z1>xL{*X=#V(L?Fw3hbh`t)|T>#n#0z(i_PzW%?j?)G}>%lj3}}dOh{&&W4ZD)$2+o z?B>Mf!kHCb%aEhObve<1a5YVQrp-CSurpnnAC82A)70xDoe^2#ulf@=OlT1^A^41J z>qAc_syMy8p^;XPhQ~S8w3yt{siwAnooI7Hv2|5yr2ZqX_HaF&V9Sb{zPee`{+kpy zbHXw}>&sN~+%ZXBO^s6`Q|IPv<|d;za7~^UzY0YFNNhNz58J=or|EVMZYPKa#9M<( zMFL1vcqO0CQ7G87l8ON&#I{wuIs3V6r)pIXAmgHVJrCJ5K_ES2ZkVWd8#fMr5-?n| z6Ag%Svp2SoNjsNZs+!zNygmnRW!6;ZoH4?!#VLKF3ynEp**I#|5p6G9$v_-O#Rn}# zz0}Bq){)2VgR3dy0x%0gHza@AszttIM@KWT@l4qVZi1Qz2ika!8UPJ>paUoLwS*b) zQU}iEs0$hPZuDVvc6okAmE6#O4(6lb*~#b=5oV*)Mvr;)>C=b^vC-?JM_lDau^yXG z8!FfQum)N^VfcD-r4&sg)ml_AKO2Y+gPCYCAXE_*tO~}7Xyob^#;m44Fzz3-kvpDJ ztxa`%Qu(R69z{u_H^rbf@09sdnkvbhh~&t$Z!suXQsKkP50f|GpNn_{*aFd95DlPB|p; z(M|?LJx-tUnUsV!>XG-fBHk6WGw{8*9%~Oyu%Qpf^_Y8LlATe@y5+>N7e=w+`8e~v zo$IYT@qMD|K*sNhgxmaoL{@z=myCa(=`lPz8!?5hbG;SGZ!dqOtVb%;N>r<&Eg*RV ztj8h*1DSdZ+?3lSw7vNiGBs>|p=)JpD;fZj?1FmyLo{0HP_%7pT{Bg*J~d=j%#%!B z&Ch^s$gBB14=k?)Po?z;i!ghv9@>gGxlgyB&t_W8k9gqyteT{MP>-I7auY!b3-u_A zTG_{Xc4U1nb;qM7_q2vJf$gcmU8LLMil&3;#%87{Dj$A#R|aavZp373RJBARS#ueQ zKP7vgXh=r{v!a4-aq<5)L;WY^!!9j#O5v5?x)GBX=h@f^qHm)K@zP{RUc+SzkeD*vCJK)xyJ z+}`6J3A#pr%vd77YU`>dAt?+Po7}qNuUCPHi_wL|%&bWjuxDGpsb~4Fqn^6AOM0P^ zO{Su)qp}tija8Yoh~0ZaV_{}&YSmbn37o1K3%)qb+6ps&!Bcy-A_=esk1RS3eD(y0 zvAqUPt%eyy+KVPp-nSq#aZ?pr5zkh(;@)>| zgP7}bI^bMnl ziPSKC&t^1#-qf&k&uui`P#L@*;iB=Tq6H)}9&akzuDtPhoHE~ur+k$hFLM0A5q$pc z9bdNf9fSyRMRP}KOe)$lqcI6i-FQ6Z%OiL~&qHoiZroXtdVC?HxQx)K98@%fSfi5g zGMt^?9G;(D4G*twj?ceXI$R>BL6&a;upUS5+>57w%6ts^d;4^@YDhs*Y`Aq}UiyK*MoUsO|#c?$L68!IcEZB>Qz-x%c-hq-CghaA(tS0_UaB z$cSE8j5}t6L^GVx@|%Whj?Dpx)M(JjkU}^dfIy9=zquVW+I!2otjouR$3-+}qs4D- z&PF3{nRDF=aUd+CIYz^Rl!XHUnHd+F+ZQv>g6)u2EdhrD0;^M^!fz-pwBD^#?hOTh zg;uc!P%28(Q+GNlU|^LB04Cf9DqL9ITfo7Rs^itYAgKU?^|BqH+D&3?U?om89#}gQ zIdU!QUNdDvgX6XAshVjHjLv$R2%_k|P#REx!U8KzqVd4GP=-`A>x6cOGYr^QqsuGZ zw4MKNO@Q6kALUnfC}gmjL_og!?K}m4d9VPAKy|hyNfq8pQ`EcXVy^9;znff+& zwKFG&Bk<$O}e|{Ro#pma6__>KwQ{PUn_U6Or;tISueDt_* zcZ8v*+8mToFW4Lb_Ily&2cQOxjUpt3C`bu5Lb@e1aaO4{peZodt9LZ6CbZ%yZ|W1cGQ< z)xCmEc@h5ec4pUZ-SCz}wjM3t6YuqZ(CVN0j7w z6aIPc?n$yl1#1r=A_9ie&X7#nT2vDdvyfC#c+uM3;eG@E<{Lj)eG0+~T#HYl%y67q znXa{I(f%!-;2H|O?Tjt7!WNlYa*@XBz-!_=T@jP4-)cdNlIt5Kfw18>x#Yd&V!}Uj z9I}5cnLqYebbcql9Ch@(f5`BnRezeo&xn2VSP_aN$|Ml!UNdO~R`*gXUNbF33yRmw z*icjP3WME*>NT@6*yLMBR)oUPe+5P<-7qMA8>4%BF;g~xy`oi|Qow!BzPanZ}?@edJSWa>qyhYvuiHPLu4!oB0mP zCh^^2{CANpWMzW{2=}zNl9irLh&)R(JA!R+s)3&)=2bu`P{UV+MgaW6KRSI=Af9kNpu@fad!3U&yLosN9 z)uPfZ&JP*_gHHe*153G98Z;3Uct!q(8j9kOx$_Q{LWI}qZy<5~CrQcI$u;6q|D?i) zwm};>MWcW99N8rR{%aBTB|>wD+Xs9NU;83t{9HKKzyWwGqk=Kj+dZGGmfJh zFq`iteK8!ffYC-$`(ila03#&gO~lax7!ft>i{V%Re{3Jbz8J33-wN!xeKA~FKb0>A zFT|%B5Uj_m25bLF1~?2h_(b(M0tSvnbm4~Fn(PiINzdia@)NWKqB}V{A`5q@!c!=F z{WpAlcKSfNSK}etfo(r-B%_SyM#|D~nkKIq&ZAWWm6Nkyho4T4ZVt~+PlsnmH^=7} zr^Bn_f0Mbtv-f7FzYoJ~JRxYznnOP7Y55V7^F?yF9UWcpY1|x*E)Q>pr+>HZ=^J== z)D}^HIR8L|+UQu(p&p$MPd-tvw9y4?1T)<_8{ING%*lC7O9>HjqxVLSe7)*KxXtlf zdf>t>A;k@`R0Oz{V?_xZV$}$M3tx~DHjRlae}uh~4?+!S4kkB&nN99uK(i|_R#;qJFLevf0$CMXE ze+ar^1DSTA2vIj|BG>*Ctr}_ANUmWM>k%3|sUkzY!q*6anL8UQz3DkT{RUS0;fG0nB?0U0hSloU= zpR`*1z>R^|jXSBp*EN8v<_uR)3(=WPf49-@S+6Mv0^$G~<*jS(iXd8T8xA7Gwh_g= z5%#D;W1s%poxPVkgEv4h5F4MY@TjVqZ7%g zKw%VoF({e-P6Y|0wu>Q&=VvNJ7+qY9sHEo+5)(%GS}sq*^<#1VP9CwV%*cqU3jk>xF?kbB)EU!%0%LjL;;2D)S3f^(D`6qnu zJJ(xLFlTv*h~~TRZ-d(#B?#pt;865N9gjkPDdqH3i0MZOj?aJ&pV2UYfAIm?HK1T1 zc7aCinORE#nnl_{sZt)N{JIt`+%a zsX<+fkIjfgM;XqpV|a;jes(g?uKeHG*FpY?Y-$S4)0LSr6)J+s$InhaL5Y7V_i813 z(erKDg(!e7(S}trVaZ3sh5|w)tjO)*r{_n+aSCYzWxYX)jJ$?)af51%ZT5{T~c0X-D zY(4-gSZ?NdHNY$`(!h;ZC-{XN3KIMhQ?u6rwZ!A%-pF3QmOm7KDaY)GRlae{)%>Dh^`OFnP6^2Yh_V>TOc}EW(w9u1l>%i zTCfz{uC1(@@6Ihef9yC6kh_GzIO+F(gK-+3{+(}5q3{)}X&mkq6fPBfBf6>WToyZe%D2#$n%a?u& zrcz;M?oqsm<*P{B5HgGjs3T;0ZggS>F&jifVHAB@%=BwP;{DU0Dc~(dOB)rMD!zL0 zwd3baJHDZK^L}Lh*ig+3V>t33&7a%?PSb|mTlu_{I>)Pj%iUT1i`G>s;5u#OkQWe` z7N2s@mpd%>e|gD|dN7*>k8I-HJ~^q+Q(;vYq^zPsm%$Ax3`94B zO@f71q^zyW0kPWvs`;iG3wb$6q)cByiBN#5t`TyUe|D+ckTg*FHHD;6UqcHBOPi53 zP}y`!)`}d|jO$8;twqfas%dW4MFrI-0}h<+CcNRklAX4;^g6AJ3MyBo8mppOr*u(4 zmBd6cwsv2sgbY+%`~$kEpt@qJv5*SA2^SSq=Sw7IYxk8*%G!G4C3aCk^~6+TRgCD+ zx~QN^e_|pzOS`XRlGavShulR4l_m?cg?V7Ogz!G7?3ijSXdH*Iz^)G}85V~m)Z5r6~utd*nhJy(7CXFkWZ)#!se1;`{oK`;v&1@>EE~4`S07t z#PagAY-o=`bD1(l-Z*g=HLyct zgBlYmmE2;$@DcV9a-i3DoLAyI7VtG&A* zoV#(yPNCjSN%V?s{fqdMs-V7au8(d=ys%k6YCmQ4M^tWdXNw96Q4lCgS6HcRgGysghT5TCp-0GS|tsRx*<#m~2z5P&Lj?iAN!>QF2)jFtvInqwhgv??;MldjSod4^DBx5)>j zvYi`5zVxdL`{DW7<<-UT;)Z=F~S80Cxbe^iX= zd94W`#;?Z-pyUs2Rsvfz2%ySZg9KW0Iw{`<4H8)L5|2euk#Mg5ea-YfPb7n=GGCkwYEJG(r4Ur?OSS(PgOQR#ODk$D0!-Y7 zR012)fT#-Kwe;oN53VkrX-2jyfA_vw(QA*hx(}+_O^IIo7-X}Rqpo7+yz{~+&ehu@J@-pHF{tlZj;x#2K6%e8u$!7n= z=i+`HfQoiEb)k*Dsn|GEVXpF!K=cMr70nxfs)Pk_qG;X#R4QC`us@RDe|^Y*Rp{L= zMc&-0yAVU|B)7SBBGtP=|GNOVaN{Ze^-(z96`dY-|LH!syRrksuJ)pLWh^u$kbTzB4#T|F%XUh&Iz#=%4$d{3|+z57SbU;q|l;f}wGERNz%RMw1) zS33h}zqFb*9X=Aila;wYf6`DYH&1kkQhILmuO%PP+A?V$-k+i=lvm->(qRRKk)~7Q zD&^R&kjj#ap-kV+VE%IUx3lx#&JxT-VC(i~T(yo-Qjkc%Gz=cgvm+!H(fjN zC+r(v*psuP(eF3MCl{AjH=jorm*;0zMRNeo+N~Qsfh!siLxEl!f1$s7YOBJ~eJbmx z1#P?rA}-i~@X51vep6NudRaqs&sqbBV&Sy*4ujc@jpHCBTaNlc3-C|~1>Si7JrJ`1 zksOIfJX!7qW zfBuL?Gjj zgHX1uo5-R{B7Y0jA-xzXs5dBB=~cELtIL5&CBqtFf?E_J#%&3;cwpHjs7)XgYI zNCq@71&}NW-V^9!;6|>bHk&v6aCWwxSO#F6m6<9_nFQm*JOJvt<3&mNae3V?4kNg> zUwo|ZfR6S;e-fab^_RA_i1*Sf-C1irL1mDtkX-;OV=?o==ccGQaVJ-~t8sOcnUVp7 zz8sdkdw|DlFUA6DI!>$uKwZVHI$$iq2MuZgP^a;%M2a_oj_DMoLmj;&9{=0<#nHCI zo!Hp*$1J#W(%(fUw)nh5{47*2uKnw+=BEQS9aN{Ve}0l6bSO}zKJh68SL_#_!ifx& zHFylc_5I=_6Smv1b(yc4%^eZuDz!ctbcW-_|4(EG<)3qeSw8pK2RCBeyP!H}pt}A- zbDWtoAN%8 zxdcE?ClvReSDQ8iwHL7?z< zl6uN3zG9`miA-kk>Eh@)m@iljOa|Ofoag|8e`p7Yh9V@41dmynFETlRcb?y5s1r;C zAU?#yrL^Q@l>sgP&YZ9M4KA_rD)Xx6M&kQB*IRc%aJ|*#0(|R+$zT4>MVaWS4%L)9 z^ejWb*|2j&fhsva2Jar0Y|7iQ5Ld0jvk7yD@b5QD`Ev!>Sv^~iVO-RJ%^mj zk@~?h4qEX1j7F$%euak*IjYfa7)K=4$6_-1}a{CMW)48Q-WAnf0@*#GfZKN}04<;Gr_ul^z=N2W04JGGUSIkn1r14I4c`~wkc8s?iq z)Y&$9M40Om;J`7{t+P?{7j;mq0si>pYLDY%{Z6 zTd6=dY%;U-rc|JfHnRcyb9pX}&*|vsWO(zDyM~_t8-Q%`TbEs~WC}TQR;nFn*mmYw zW{F^!#U* znQHi@V3E&6Nt#T~@YR;YIQTv9p!s-(5p~adXsOH`7iv;P`OffdyAtDS@A*JlE~daW z2R-kjOW4d?63*(+mxTi@KSU@uS1o7J z=I78+<~eAh;7=YdFU4> zJhl&Ma1Euk4e4z$_1jqwS4MJDF7+~sgK;RA!dNYcHo;VM?mMdCW{;3e+c2cr#U)@( zoI) zl=?U0Q~!nwe+}haVc%OD6mGacc2!p-G=(_vg7&U8g{L{4ngFMJ4GXv_IHAsH@0y59 zOYrJ+P*wO%*R?YwzJB`TvNO}?A4i{d-a#XF!f4qb?omnmCcVUuSaf3*0nG^%k*t-|Q2ve|Ghnj}r7CrY$7 zyJDXxrfS4z8xtwMV{^I3A5YH@-W;ADyy2QBNJffhd>{oWn?XrkfW9UT)|zUaG&yJe z+7zr&f7O!p4v$S&9toi-HW~?`O=lL#xv6UY$yAy~H=pPDR8tru(pG{S5q5qFw8b!u z4_)%F#x%Be)j6P$X4kv1bT4~}4wPN7seZEl6~s~dMB$6YuG{1?Q9HxWlU>V+L{@{F zqNuHkc`{b+`SH!eo%n9zT?Fztr^ZWsIYCOze^c<$rM&9`2rr550xuRjXLKiyq)G#@ z_x;JP)6~yYQi9^#REi0^4!`w1k94|U?L3Ct!%ZIxgOA`ghx5>OEu?kOZ%sit ze@MF&Q}-?{^VLV5dIxCl)V=&Mre5*w2ZdfOc|78jDW8DadlkqZW9k)MBn0YJo>(=? zO1`!C%sgo@^^NJSrrftI0elcOzoQ-}znh3pLJY1(T%Dq9q@q(e^&cC zK>wI`O>1vz=W>AlbuXlf+XC@&?M@hEcs~mkd(Iabm?tCe;vw~-`Rq|Soa-=7(&CSJ zVd7o-_oocRk{gspoojBK`?J|w`5cs-e`L===ZVhoZaXKx+?v4Z1e85RWs`~>JQf?f{@i2- zP*bGwq*GjcOMaMKlm}t{N^~y6mxEj>l2znuTQ&xs3$q$QuR7XD+4Rf7v-m<;2d8|i zUETHSdP3xH)5z%6p44cZi0=%+K8NV%T-HzV^0qufhoXB=#xmZPTg7HEe;uM;hLF}N zh*Dmjbp=YD_clw6RE<~N(QKAj+4@`Nnq#xFJF|6&M4YqsOoWaZz#L&ROGsH#KWiZq z7cq@!ZiW0docr_3P?AQjqs=-(IU8USY0e7xB$8;4L@WM#e||N~R#FW)xV`KowF{K3 zGMCxn1>eL5F3#lHzwIe?f19~Ys!-REDaURCG0nN!a=auoB(_Bezu3t~Bn%qh6%)J z?j_W+M>SmCq8xt;+ht8eh16oE;G;PDHQW>-o-AG$5sH5o|%RPqBG~bP;(*@v2Dtsz%|-tG;oO7oZ;n*ZTqlhi2s~* zWlby?B2ur11rJEFf1bcBYh%HTDNGZHGVNr+{Tz>B-gOrX9_AQGqGqp&1w(Y~^{`-w z&doI}#Eh@D{tb-Vl1Y^Cb+P2X&TGSfobd^jG%iz1 zxtgZz2P8A5sJj!a7~+U`wc^q%v3U~awqOzmeN8Obm7=}^e+#xV)azcdnckl5H1)RU zb79lh*(<*n&aWdbG}b+$4Gqc6OS($M#Dqm!W^V%c6FYIft&6y0;7d!e)97)e<0MGI zTo5+Mq-t7yyDBPp>($GcUjK3tHT(x$pN zE=zLK!h7{wf7M`OmjYNv7iJd)pt&$=b{HFWr@e4Ze3@NhV9kBm(D_=BW&l@PtH{@a zl>;pDbcQzcIk*o*>sLB=3*qzA#GWUx(tz1Rj-ogaOHh0xk&;1D%vHY2M%Uie!@cN) zfFZl!-vwzPpE^^qR>NqXNIKJ%q+Nz{F66}fw7sjVe}c%Ooai6)Xvb!hkE6LbN|vM( zxZrll*`l^ZxjGX=qiJV(9<-sNap9rdeXSrbkVL(A$waWSw!wmi)Uobz5k_r`iBOo^ z-4+$K#Sk7y4zu~f+bDjMIhapMh$l!k^F?SHs?k$>)#YKH*47l_(dR5Rqli{C3%KwM z@mQ}@e`5)SYN?&*A`3=si-{Y*Rwgio81Y?HZ z&NnQ+i*t2}@{FH-*ckrw9^jNo+Ri;CQQDV%syL%U4=SnqcK#|;^f84f>pVx2DNIC% z-4)Z~gb3^9iFEdqBQIYkaPcp*3i$jeM2+W~e_CRuag8zsSI;R&knXXxO~}itM#0rR z7y3w7>};!YIK7mqozuP!4##EZSbv8zFu!C9k=D7|S^>XgYG;H)mv~BCOy(x=^Gc>r zCGl+84o~iwl1SYyS1Jn;DmKK!W%Eu+G;UTBiAt5>PK}wuT<@$u>qQ%x4oDrJ!qoB7 ze~vhOO3oA}oOA6a5P{savEQ@5y)XV$99}%ghlwNqUN*Ir9r>3}bg!nn-zC6%KfM)y zK8Y{4s=DO1o|x^o;Vcc}%2UHw{+>W~9nON&$9sub{<$rw zG$}hIh9TK__0Q5>q-{9fguzX8dK(;kf4iSWu^$&l=ia~kQ$!>UC6C)43{i(k$HvpJ zb?0ktxV;+mBC>0)X2vvj*3GeN7r3f%)4F2aHHYd-TWxMySFD@z5G&fcdqQLAP@tIx z&AKrTF(%es5?fc61+}RBTky_IV`RTn8)A^`w`MIHM7{`V&1Th*UO>aQvQ5H%e;d}^ zvO2|?x{a2Bu~crf{8W4P7R)qX+1NSwbbYC)*3Pv!lLUA7smvk};VBa)2j|>+6+ndG z;HK>t18Q{k;+ymIHjcg~YT+DwyA1ASMB13#Lj&yKyn(B@GyOxds0^(TY{6PerC`~t z#$n%RJi!oy;+1U$_RBGn(SGsce@A%_Ggp67=5!_EG!cxviMC`_OmV6|uYV_?p?26H zn9bULljdU9>KR3tb#fjD=|enE3JadkuI+bgm|g4In6tpYk~1wQG>wIQ%YS^m6#=B0 zajwaA+(+a`VdxeY9L2BJZN!^r8+&4E0_ma7Hm>6^m|vZ3aCsQ}-5uGhf0nOv&Nk-T z3bmJRXOKtsjzsf4a;qS??l9zXrkFyH-QRwS*nFlh(=h&d%muHskX1 zv$J$D^Pc=y@6&I;-5cZv$8oPR)33@VNTDndtw&$NtA?Z>8Z5`nNPf6`sJVc}Hl>bx z8S0z*Uz004^wu#f%Ht^~=jCI{Om?fQ~~ohj^^kwe&o zT|5#wQ|R-8Do}Mj6ILOs-H5nTIc;&$XecsAMCiDaFrFXm0+cT22a|}UP7wXx4A@mE z8EyvV+u|qEZDEp3Ksy|DvXAw4;3FT@0Q2+Kz!-!-|!H>Pm1zmZAS7~aE>+Jc~4mkTr=2a7BX;u#sq#oF8 zP}O$bHmqP843bO*e?b(UAiR{~BUiz z5(0=pQGu`@&1QxP&4mN;-W440{p9u}s80?cVnCdB1p{OI-Roe$O%eRDLsEux5YM)z zFSF#DV};EZBFyUYHjBW#6A{vEe|)c!X2(Vjl52S)ez6^t zQkvz0L~x)DkfannSKLSNrwxddpf(pIf@`%wO8uMhsei+TX1K^0A{7+!hl;0=W_AMs z2TC5uvUN-tBt`jV8Ji$qojAMoJlpvE%jIn_JKNxz9Fzx!AXQAECDfmu?@p#qpYdTu zNe2j4!(3XTfA#oqqGSRDr{Y^JQ3l`qyZc!n^8xwrqD(Rb@9EyVCE6dd3vMo?-I>Pl zAsf~{Y8Vu&0sGQ`z2E%VpFzwvGH~U(cDN-gmL|OWoDV2WM{5OIF<}AKJMzQ1{IMWN zy&raVcXs)Z!xg(*k(Z1*R!icSK5QGVe%B6K64oY5f6&aP4cD{7fKHb{=RtULdl5Y_ z8XH+1uN`zr$aaDL#Gm=`<16n!c6WAm8hStz%d@{}cI$yn(Q?s^U;c=0=T}j{*Ms5i zY~Y%AO=I-i`@_?NlTUm52lDz=G)a94yIDjuRtJ@lCy;Hal@sI+E#qb1HpTw8(BoDCKzP-(xvelm#_6nM6PNkxD-;d z{AjkN57GQ)oJQJrZyt(2a1+GiqrJbM3-rHAf2HQh6E-`8i`y~T8C1}YsVUT7Gujzk zG_JF;KLC@-M}k)d#sz{pQrXGm*3|pki`N zgF{h<5EJylk(oe5Mfc7QQ|5USNt5E6HYRZ&bd;b%ZcI&a2E%A3fO9Y`pFhrJzN`r% ze~!hcpQ2FwPK<>Tq=N#fbXy^mu;BvYVO3~&Q*Yi+bbflw|co8FgU$X@ieBUR^Wi);$-&K zyIi}!h2oDqq`xh~gp7cxmV!g{33_IGf620%MJ=%`cnaztIVwh}wtH*DfQ~S|n6im; z@<6K*P8n`1UUWdwP`b^)(DoPtVRR}`SB)4L+CBJX5-_l;b)ClH-JM<{eHt0%YQo$W zOP)y)b7pM0d*q+;?~6a>zQeSb?Zv@{@D3b^hgc$&!jS13d|zn z(f`VYJQ{0$-7+1Cp!!&iL63q~e~o&oh}$5;Sx@30&n0 zvbEZSQQ!79feKxfjz;$q6nr+)$&7@<5ssa5cf#!~aFm@dP#V33Wir^j#sn^`#k4_B zpqg1+ZE;?wz>PZJrx;?E4jpVVO+~YduE1;Pk39a@XT;Er`oj)oS(9F(PKmh*Kd*^2G1fc z%Kn{;j55f@h0I3(rdJazMMnl-H9oQfXN!&CQc_Gus>y&X&Iw!_it|i`b2c#xtUXl? zV1+QNGk2~s6kzydm9ek-e>hu_%1ia-MR2s8Z)94%h;?!py$RC=4Q}BB-q65IPR{)t z=VO+=iBd}#@SFt`GP%xKs)K!oJzN*?lzWv4ava>mlD zxWLk9T*X8CV~FC&)D}chej*|9mPEvsc1)rm| z7DOMXC=w@<+h4#aVfLe&zpzXOpWlF(l$`rC#HZwHYZbRJFdwqwH%|SVPNyakWq0Dh zne29I65ZQ`j!JkJf6#q_Ytw_Mlw570ew%gi!a^ao#oO(mM4Nkv8Od`{k_$H{4#u~B zVag@f`i1zGTy3qw`NHHz>-q(bNOCRo7_32L$!t{%EQ@eQex3_B8Vo*b|^|Vby<(GpL__DG{2#Y zyuyKrZK=cLe@wQeKHxPsOs-^I>fJnbaCe_RE=#K{Uy{U^PlD8ilnx_zaNY4kuxVY% zx#}=u)hD&0pFA0dx-XmU)M*&^(C!){W^%Q)3U>|jAQ5-{w}rD_9{GD-$q=t{aUKa$ z<&rN2F5{d1%T&bB8fO;eQ~h;Lc$#mi!z|94j^z#of4Q#71B|JnRQiQd2W=;vk>&g| zZQP-VT^?}5AhA8`PFrFWM}-x{HxvW&>nC=WW}PN@U86J=?}?qN*(5~X==x}_PwnK* zMj7<74}2TW{rP1mi_~35U5;K<=+>>G2|CvqtkC1O!x*(!*1f2yS8df*;g+qtNWZIp zYG-E-f42Iq&bGtq2VMY*i-!^wP&-Gi(U7~YTvlVxq0Kf>TfGLh^-r$LP`f!5uvaey zixXk%6Qfm=b{1BvCT%ZFjoO)>Ls_+*_Q__|wXY6?S+<>P3R?Dc9wq!FQ7X;?y-iSi zMcRMX#b4P;t^NC}hH2z;TXvS~5N^v(ckSD4f06edR<}joBPwp|B$6xQNVMX=_vcr$ zPRedn_~dg8S2$kjHFHRA=g1CW1$K^W&sJdPxejFocIInGD*(ds>LTiK1Gh76iCbL- zadEq|6eD9Z2=ca2yXRFpQQh~dGgI3^Mw=%ep4e=jv zf9*tE(C(8mQaE_G)g|mBg11wC|1xgP&I2CKt+h-rpL4TQgoki$5LejsI{)|VZ|{pg z6^9oO(sqyhd)d@h_S~`TrbT7DGyqZF*$$z@pYp;2p@%3Di{K`Vh=KcCdF=@(HF1L8oOaO2XM(CX)T@6%i;@+ zLk~$Bb_T5kQ8`hQ;7@vVnvbJNH4RdA$Gi1@`IJ^ZxoFoLvPmSAg9$cM=}~ND$FnoTy86Z+Vhw)*m8tcen!u zpF|>|O&5BopM1O!p81P^F$-i`;rX2ep%R46%gnFy_q8p5PN>AuXKaN6JV}`So|8vmZm#flj+vv zC5V~)AeP%S<=+ji_Jk7(>UU0UVmxPHyLe$6+U#TeHB4_S1z6+}f1L@QUGI1nC}u|3_D6R%S)UjZ-S*`E`*Q)Wg1xC$pLw?_eHNIN4wQ4(mF&hbEKE0L}po(qMK|k5fW`=T9TB_AzPBSz6|0; zsHYO1WY$Zvs%1$zw3KSrpPC+=s16kKm$EhJ{p6i(i2t}If0nWVk zOcGtJo>R9G^JZRl`6gw!D|uL7u`(&Umv$8`}TzR1*+vrks# z?t5Kk6sJsGU-m~X?iEH4iicWZ!^OoUamB(4Q{`%Ue_dgHUVGc$DVbLoB*?gu6$Z&S zGBriK@?Nemlla-^8Y3w(QrB4hV>9BLRC zk-AK&e;Fjq>vckxavXfYPFO`B;YQuBg!~(~eH(Q46T2cL)5cws8HDcIa36+0fWXkY zr^FNanVoXtN!;;?U22j1kVb11VxY=K^Dk*>q+hI$0`ZGiZ3QGKXdEgdWttfa<#A2S zP>c;p&)E0p(OmNK)a}p{^>F@gdE2Fb{%k{he?_lc@x!^F8R^Rk+fV6xfZCKiYNtCT zXKJYG)N6y9)%VpuW{xhlAIwe#Oo@gQH#x>)ucW)SVbzQq^FswCL)%Z6bTzs9*D2Fe zL$4^d*x=g~hUBk*Z%Y0k_J#hEQ4*{f8N8WiXslO3G>`68R*4NFn~W>xszqd`tT8j4 zf6z2$BoTG{#J>}NK_K!a1D#iCrfz{ZNzO=6T-rm7;U?H5$&d9RK|_N}a!XEdkE2v7 zZ8G5{C8YB-NxG47=epBCtw6TVN%+NL--ZfnA_%7OAYFyDgHv%36EvDUc{?^4baFv+ zl4hxg_NiGdj0le8y#a7C4ClhOg6b8te-M(XO_IMY$URiU3NB&GRj75ZRIIz3R<}G9 zsJSpoGnpjmeiX+d8rO|{yf)wE)97}S=+-d)`Mb%~PiE_bc{Hno$G3Q3&v z`KZ{1@hq6%q_=!(`Ba2#lEK4UA6=%K(fa7}*@*S2!hP&E=cbjtCN}5v^m!e{f8J(M zKIT=iAAE!B^xV004CW-XxzvKu_lIl)==5aSgwNbuvH^4!4yXfY?kl+fx+!Ki0bJaZ zvO#o~52%BvuSePNIbBaP?M*9_nzjqU^nBAq_VtXLqFvC%c~g`>>WA~>z+4cwODGZH zI=Sxk*cZEr!xRRz`fj|*gt3z(e~g5qw!*WGy;<HheK~k7C?@3BIXSC?#eYadvuilsL1E@NDDt>`(9M zj`uEjocZ$``7Rp-sV8Cs?}we|ThDeFQFnS&tlGD!t$ns}9f!gEDq%$0f9ZKpn9Y1H z4xQdCybe6!Mjv8-ei?Z8ac~zt+`aPtV=|iVh=Juo+esEiuhsKMW#mkNoQ@7$4%)8# z;#A2)JLS^N!9RC?XM?(`%Aj`jm%4^s8*O?n&A*dA`x$*FP0}d#Z-VXr5)-j^<=-#n zXayBH43@_1sFzz4R4=q+e@-*r(khE_;58(=ijSMw8CO=y_~`KDh6(L}cO%Pielma=_#yd>#o zH&|yIpMSZ$4Q35lf2~BMD8Um!s@UF3s6Rd5olKuTCFsU%i?KU%Bv5gbEa%OMS@OTpsqM zoURz=M#=~c6g|JEb?FxQ>C1iKT@+n;mkN!STt;y)@@COj?<%-R+4wp1cj5N_*lKz& zI&~97*VpGyf1mC0bz!*e4K5ebOrxZ=3GYk=7UhvVpU8V=U2R@R>u-Woc=APB+2Y|G zuPRT(PSLZeoGmOBzA8VnshuL1dE1|V5w@DfG0JLph!1uP)n?|A{MLxu_hK)x17VcS-3a|;9Z#z zbxI+%JNSGkTzD}W*wNc7lKe%3VNxNJX2-4;e|(S8uuC12HFMQa%@amf4HZ6NYKpDc zI3exKO;)WK4G-w2?KMyO35WCEG9MaSog|Mhv6oQcjDT~#d{qt;D$0U6OiCoIoolb5 zFsTO2diqzmSPYYY?OY6o(9{YZT;L)vEupY_H6O^uGQP9$AhH*W;R}Tefp8(~r~gpc ze_n3pFB%Gyiq159cD3Mp427X8H0$lE;p#R_t{N&?!_*XdP+@e{P}P_wS1n`20sXYS z^i2PuaKT&Vf0%2sb=49mVA#P zaZQDtzm&hODY?_1!>*}*(+`KyUd5(gmyK7kX^M*nb=Wo4Z3YgF3w|>nCo?+Bni@F& zpG3xZ8J%|bNePWJSKDiFjFs$JcW;aCZ(QCM;_Y*_g>EIB-WKBLH+fqVAxl=ze?ZEiR;-nLpGl+WYRRT9?N0!7(enlmre-}*+AvWR z(Jhct|7LvZ-*BNpoHLJILs#b8KmN$n8k8~gqqpZt4$(RW+^w9d_HdAYemn}%eHpF2K&sa22ojBRFf8dL%RA^lRSKNCa zB$><96!Dd_Vg4H*GHIYF@0iQc&);F#a5gDK((rZ9_oubjDc_&g6q;fQtcMn3;ae`0 z|(Apc$pTf$oEgSrEyhS*({YUS!)<^XGx%cm1t^~Q5$jorFEaH8rfoGx0E8BaB1}#8Ubs+h$!fua zcl)hl-$C)V^mPLFeN0mV?1dyq=%CJ6D(% zMTr%vMt4bhe+Z$tajogCPAyEw4+a%eT6@D?X22?@Y~BObFtvCO6;-X=eb{A9`*a_6 zaZz{op`%mdKknr}*c=E+D%2K3FH47OU|c?gB=y;Y4;lChqnk`8sVP{dlg)>~BApf= zqRu}n_aV4uCzlVgYjV2#5Pgo!60zhz*nEgxVv}&%e^oaa>N5?D%ZHHUGWmT7EP=`7 zLm<6MrlwH$$mc`gn6m0a%ss`*y$Gy;$>v4u8kX)}B)jo3e#E@kvw0G`CMD^1N>TXC z=NUXMe?n4|?A6)f4x7o@*|i(pot?TvHp%JZ zv6^!>PiNO+tdkq4tSkved^MLrFY`8|>rDkx6*yc}HMEx(6u;eaKTdFrBr!(Iy}j-Y z8=BR+X$GxCT6@E}X}eZp)00Ajzb5MP(V5ZJK(N5n>wh5}BzB1|KUME4`&KyweP;17 z%Y=!c_?(RvX4f$6@)oDyaj9@QJ-Q)Ih=_wsDq|x5*i{Al<^I^^1qX3Uc9lV*TdGjn zR_>bYI)sC`Cc5At=$fkU)y6&Ds(PXB+j$tQ{G1pxz2+ zfq%9mRk}z^s4sV)?(R-^cN?(MRxLyg1+gmGrX^PY?(vr!U5g~T;~QM!nXU=2k(OFQ zmb!!9e?7#J_@UoK)a~tk3B2bc?+5wTG@0;?I$75V=uJ_HYT2oGQFP^9DmdP4n21B< zW7BMqj@WboL!cuT{leU;62Bds-}Ci=e1D|~^x$;w-4gNtv||OITp=6Vyp6TEQvsyC%D&Exjx?B+89VcV+OK+#s{g@!Y1lSCMIlyJPLR>K5UBbYyzoE0i zq3hdbxU`)XUM86w308z{=+QIxY+ftJT$0y4pjZ)4y{FEjoQL^v|V}Q**7GfsoX;HTx-Rb z%E#@kc`NA6Af+af+E((gGzp^+rLzH}BrB=Sroc^CncanuoDCQy@5pRGg<20LQM43( zv%#Z0tfZwn6z0~sP=%totiw~B-+$<&bDHLhPsoZBx!|&$`rC=E+6Jw#eP*L*KZbBo zl%2%6D?4f#tL3D@1sHYq^-o@;ofo2}GBt&|^XA(>dFBTN0bq)$*yIoAVJap){Fg}~ zE?#>rw|GDGW!gtUgyl5akM1A8*Ix+IP~$wTrb|Iei^RK;;(lL{ThT+oCV#qu^IA(G zKpxFf(}Zcqz`3gB5TFdpD4KBLqA;ln5kMK2(KF$~MWL^j0)R5Ig_;Q$Hj-!;u=|$* z0~#k3xK3$H){VCew4`vtw4vE4v(7tk8MH;-gb6rIz-`)z2~HTI-!e5dxIO{QlLggH z^q$i%nRswP0+mmdV3FTwA851{WqE@LW-0f&sh+%$4P1=MwWes$QdK@qYmliBl?Uuh)((nlL%0iEQ-I4|5R>bw?xIK4G&={i$yL-m z*J)TxPQuPT9n4ACDX0B82|LrY7bjsSnD*%;?7Y$rl4%1t2|H=DPbXpLic*|JkFscX z9%z%3sChcqu(+HAyMHz-Eoa(J`0US1)bKp}NeH*oJG&9lK~tzv2Az{vs#U4OQg#|&-(JcoEf^ERAn+yagg$Wk)uCSDQjd`%edRFHhl){lTRBp19i!qVJF*xc z*Ght^e_Zi)x6+Qpwva0a*N(MFc&HP4PQqjQ!coFQy)&(weg}=3H5dtuQd3y7;cS(@ z@8v^pJl>y$Cx4Ig)c-dA^!ecJ;or0LZ>~({Ua_h?dM2c#UC$jdEe{(_ZRvHCCB1_Q zC`EdN4pi|yn2?fANbZmwQr*#O!Cr^@bnhJ#PDs~;>llHL2`D>6Vw^w z4sC?GmfRqmPLMNF%li|dHRze3DsOWg#pV>mBw~Y|Uz#73n8imdA~rIH=Q@T$hZ?4) z(6kb^bp;oeFIKY_HtZSiC$?;Tn=V$G__F*ocN=JGS92{s{1ujK0TQdzoA|}t<7pO) z*%^AOR)0;ZMQ`p#mY~M_ACHbitatv~$IoxPpS-gT`QJ|xdA5luhPxrVG#Bv2cV3=~ z^v`fzl&?SGchWqAEbL>A%)RZc+t4yt6tvaiV>UBsn} zuWFyl)-?*DsMxhE5?%I9lN)L~r?tqkFRCBbfmUCAbF4?53tX3d(>d9-ebaJg*%#Fh z_uDthA*k55Wt6+@UB+Om?O&#dmVG(9Oz*Xil%rF4?QItOY2xNE$vXLj&tFl_Nq@>` z*;Pj~*JTBMBP(-q4JGBQlntlSc?*++yZiK!bMPp~pxS^`YRxeX4y?nHeSG%<@n^Wk z1CnJakB6F@>?GKHBwJYL;$YU3y~3g|i*aOXm$HX(wds`3TD0@h$uH-QWhKh`IV~P0 z7n7;VSE4gZOs;Xthb{Kjazf1YSbvwbtM9Yr{8@XgKuHJ{o@2n% zG0iZ#zp&8SLv|C_lXy$&r*e3?)K7Zm=jr2pc`#>#I~lBc8`=_2_U9st z#ym-$is4W>xPROGaQG&Rc+dBa{?T}G^m1!D1uqANg#G&CYbMx~VN#iIMzJr zpb%)jktR_tI-@U!5shO{EGoXrZZypXu{Q1yOGsY$FfMyig}iQ{`IbGYhMqHMb^F9Q z)RbC#9Z@rmHR(C1Gki_2`8ljefI;;aOgT!Auq?I@b7?&1)j9Nr29#xdx| zNu)K^u@tMhrGFhof3}>@rl2M>l;k^b7C)2*%yc|O{A+7jShzK;=4vHxUVhUL=StVm zn~9a5D+Q4$9GL2`QeyTZ@E(%j$_wY7Jk2*JM!saOvDa2H79K0aKYtdI?TgnYYzg<> z1(4wzj4p*(P1dK_821kfQgX#2S>uIX_u0mttWD{C@*gCKri?6FqA2y{Vw{)n1d5vK zKIq3-Q(*I#;G0tB)ume-Q_Bb`rPP;;@lsguY~$x=Pj@HN-KQ<%DxyI&QP3%8Yk{ly zu255Ewe9x2Qwcv9YJc@nAXi6~3nJyIe1S|o!k%qh$6+ACQn?h3$^_GGDV!JF-~nDA z9G`qV23^4GU@m{>CXBWA>|1# zFlJ8YkLY%ORdPB->wo#;`R=o)Q$A{Q^x83nboEaDS1q8I?V4xRc#qs0Dg{ z*Rnu~IGwgAWBk$AAUP7VEZpVD>(Lj$Doc6y>F#v* zdD}*Yy9c-APy zmeKaRZDX13UqGzTW<5WXI8I``P*}*JDLBLS|8_4=PDvbC-zLe17J2l zIQhB301rNVKo8*uvsoaF@3CrpKRUmP>;% z=C&t8uYcO|-O{CduzYF-Oq=DuJNWqd9lGhi3!?ZY@LmT=YPJ1mjTc8W+wZn5Ew0(; z^A^*8#vg3k)0fxB@ZEQ=I>WzF3*-EP4`a6jS5KC2FZHdzn)D zLxMj~n$7<5HoWw2BG%gsd&SeWv3h&G(@s_&UipkhZ!dbfYNNN;LS2E;+l!<+R_Z|8 z?0=+5L&~0o%cNFxfibSh=5g8c7*kpc&qL%3KBb;RnUYa6o$f z@io;n#jn(vru-I%3g_vljvUB^mHVjFNHO99&2W0E@Nq_7 z#afxrlJoXjv$9BegHVNBo~H0>xHgAmwA}vt;2%;<`}}C{bpQR~@jJ1K4i7$OKI&}4 z+|c}|43ze~KZD1wQGBJ#CEoezNmK$G~9h#O}$;)@WtU5nG0DY5XjPT-+$$> z+{eKe@xzIT4aEr0)6kcK4^0E|0xq~*Q<#^qo+xb%UZ}jLYHq8dzX`!}bf@pCMx`ec z`lOU&s;A0mjdC$uYO3Y-S){zC_HC87S1kNre`XHzlWMuzq>QYr5vlL0$YiFhNOl`}F=^i9fkH10IS7B_ERT*L`S z9I>n6w#iz(D9T#xPQHKt{r~+RP)i30baMDRW-I{!!jcRCP)h>@6aWYa2mk_XOqb!f zIwqGt`i~fwU>IKte?V|wO{y+gH@|5l*;4FCR87CwYE#e>Giw-}B;}U#&mty>|+ms?zjC))F$Zm)Uya#rpewzaFw^RoRt zoh^B>Hu&UwehorxJ`SRUYV`PX-+L#z+5K(D|zm2LfYaclj4qi&5WqN4L zYH`zJOS@u{7IBs@CjWIKgmPDLx#Gp<-;?QVHJ_~F@-v;u{q4KIaPOT|Rxo*^9T_RD z_Sy(%vhzMEOC}p~9LDa#FV`&yCZ8g%Tupv~|0X{zf97pHlQ=7rzs1WNZqHoLm(#YQ zBkhjuY>w^hO_qUmut_J8m2<%*YhB2UZITMnSE6AKRUUV5n*BFe;PuA(r|i2V~dv;`Aa;^99c~j}J?#oQxr3 zM9wIApQa1aDxV?v*`(cO*f0lhla>Z)A&z35?q^K&uJ2nR3hxp5N zq`BK=t`~Flq{O+0%Z^p5COWR3E1)h4#0*LeK+Ukg!g2-x=&?EQ!}Rybo5fy7%b`~$r6&uRuZ`gyHsUgf+Jm|h(e}P{-4+~kk71OOBS^_=d~~?2q~S9 zf3<3-D~gT9^QQWqT^XGpI&AV|2_()Jx7YJkT+Q>m@LiH@qU`kVoKT1!M%mw)KTjO+ zZuxnlCa04>?G<*eFv_QqI{Q)!1s#zRMTjCvdy=LoLP;|A5CiQv1Am_1EHXa?gIxn( zstpv{$xFQ-*clEc<>bf}sY>!8IW0;Nf5a}NtZh^lq@pJ*2W(yN)f|goEn@yWot<~V z`sRAMT5!C2alh^!h7(|FDk%f*Q-I4Z60%8B%)+r$3Dk%a8J`Z?Fu&Qbd!+frw`sx? z_|$l-i$}7-RIqO*OEy+flTs#w0ajMRI_YGs>i^-^{o2g9Plu#96>^9U#UM>We@PNh z8P*ixBvnb)2W6b)QbMLur0yXRgG~3w%Q>E2+#U%w9d&TCt1>_z3K9znsj$~vgA64{ zGFr(Rt4)F>r_!e~22FT3EByQMkYAYrG7j?1SZdMuPv{tgBgj8O&Ovbm6D2B{3&9(dduk0NZf8W$)PIxFX znaQdEqAWn+yi)i-T1})V)(EB`dd%+6;uGpF5HC!g$tW^dq35LZi^;->8Ake zw0P8+T1b{ClOO`1JYYWF2jF_N8R6#@8!e;reFbRHnOpWYe_72DI;%V19^bV(bO{0; zKjvKNT(=SA94_sHW#6sXUJPyn`R+cD?|?W(2#SRI!#Rh{M4;I+371tcP*INADo(mb z**@MYYrDy_)pDJMzs1EgrpxCDT%)_rebl$KLvaTD<-0NNyNpg2@Hk~EYBOuH2uv-6 zl(r2CQg*^>e;sTHeotNb&rNS_aygxSey%yePGiwV3#vh2b0E>6O2vebUC|Q4I59M5 z28&9EG~UfOu>CiACLY+jeR7W~RUFt8p%mrH-nFrZ7j0fy3(B_3 zJ85WftR3k_Aw7nNZU_&9LSYG%awwJxNyMFY92_ene?WbWtt6C>V|nklMsz5s7pv9v z^7|Jr&OtnG(iv9v;^jX;PtDKr^wrNw3jOKy?~+dSi`DgEoZgB?pnRgh-c#!?!Zv5E ziz*f8ILWHXhaR~!Uge61twr#o>t1o&#&|E=C3gd$pAJyEDhzF_s=-&#ZKZUT-Xs+u z1}Z^ye^G!4_Cabqn+`JFJkB8d#eK6sZsdIng#T!7+-pNMYg+*`Oi`C?g$8^Qv(KQD z9D~r#grsW^T8_5Le*ykXBsuOq` zIIzhj#h7?>%cd>zZtjXOJo@l$r~~VB5W!Rk9;yOW#&S&>tW!e)K@rucyvVjs06lKY z^?b3a^ULY{S*(!*tsGQAsf6~v%B-1@o9z%w)KQWuL0Vs;h_38+G+<}c{zyN0ZD&u* ze{IWt*1&Rv={f;hsJcJ^8AXDuGET_sBH&b+qEu!4%Z-)cjmd8MLU}%`m(#p@0uks? z6&+J;W51BCgQ`&`Y9FO=$$9B>^mRU7%Dyx(23$H@W`f2LYu z=}3V+sUTJHDnjQ{J2P2I3e~&5!)%WW+d5xd#nq|}Yq^~V*=$$dNQN`y+gdL?VbA(I z0y_so`nv(DD}trz%KHK}SCTEpx6!o^RuS|*C9+w9gdmuWHKhj=`@QhGeG?;>;s!2` z6`(sUjXrJk&6awB`171Hc%^bOe^_V;VMr(Covqbb6an4F!29g@oihJ%x_Wz));ant zwYsa$t%@efnk0GD1jvBuDqx1CLgacBxfHZ@l@IBx>u)e;Sbuls=k(8gW>|KYSH=;poxf0VVra+&IdH#I!P`5rf^CO=+e*{v4Q}2ea z1f7?R@PbRo9zmR-u6^KWKoLOJYTv=r@#dQW^OyW8E{BhFt%oQJZeym4uMaXiYXi@9l#!f3Mz6en$S?EGNC0_QdI32VlB=Oata-QXmKNDV2=m$wp?E zQ8JyjiX+RKQ#^2ZoXoIeUwSC0HeZ}H& zAB(W#ozPWVi7f4qd=>K+?QP}_?&;=q<(DQ+!_vFWBD1< zp2ns99>HmM5VPBZHil%@Py*gcFCvLp6;MEn9IOtyouCRS#?jpQ-PQGC{#(oV&pey{ zFE1wlyZ~A*uVV%sUCeVk_B1;`zUS;7jN;+>%KeW=f5#9l7=~|mFd@)PX=17dvND%o zk}pP+i+%IKLE7=~F!Qm~vrFaV<5bS?TUCw zyfG3aD6|A`=Q?t!g3{=e9yQ!JiiA+Rl%_-RD*Ke8%R-oHAX}qhWg)n0(Fv4K1!P@N zqf>5ce-?znHNI||rkB%IU;Fm>O))1EqCJrUVYRtL4T>e8?W7i{T1sZ9SOF2VrzL+( zQ0^MMPT3a+?WRD13fQ*{GFVfrKV&Yf1h z8XW}Uz$5EBzvf4~0V#ATf}@?=camk3+nAqZZT%r9q(p5K)+ukOLBXQzME`Zc^v z7rgEU9Si#H!!q`S8IV;b5DHpQRCI(Yf6r`D8?w`6RgO+lNji*9yR|=>q*>gJ`39Xa zS@QbXBl)Du&&^{V8JsalCwx^RXViMcb}Y%7D6-+IjL4E@N&;-_pb?8ZtkwI}*~*~2 z)q*S(Mery%t|~2z7MgQWKws2X;8q5GR-=1c?exy}PKytXJ2&3Eef)g<+3lX_e|dyH z8@GGJxpVNOQnu~>Em2fX22f3?LI8AC+lg5PIE>o%{VK>H?nT7FdIr4N{WN__*!P;V z`|A$f(#oxq?=rWcVXDq*;i?GigjN(N`+!=T()e4aUf*0@p%Trf$lvu&KDS=%?oM#E zs6Y`(m{|xE+F(Qbg`sxi2y1S?f5hW`>LG!Hymom%HlIP+2|Yk;O*?cTPy|B7x0k#d1|*3o4``4#9-qr+uXu?T|^B^Mp1}IPmI1=e{(F-v(q-! zk9AE3B|Z7V7L0&JJN1~dWk;l}WAY?a)nK(j1ledt(6P_z2h9UiUsk zt{czWn%LTkfAq8dutfEIkZSXm&T788_`YlZ*5-_}%n$ra&Yx-1#u|V4&KWwh!jRi_ zi#ZT|7g-#(t5z5DRv z+mrhX+_~!0%MX*Yv&q|+A5L~xymRGW-?b}Wy?xWJ?6G0z@;|?Phs!^_d-La$`$p|t z^_LGn;;J|AKD|Bp^5x(D4^T@72m(#1V>A;0025LG08mQ<1QY-W2nYZIY)qFSa%m)& zJ^GIhm%a-g5w{gCUm0$H?*cu6Y*?^_I0CvKzdc|$k}zSO@^qL4vn+OnUTGpaftYrA zt=erzTrv@iV!+aYZMRR@a68bwg(hayW@1nxLrM|ngzVaG!eS^BVQHZ7Zy3=Q%7PUB zes4wLr!&x*`i|B4_WE7iKWra9Z1)}J+%g6xY@BDdy-=4By6-*7#|Cez$;&G4%*G$@5+Mve}Jv7kBixti<2Va@y20 zu}h|e-G;ggEYZhrKAxRRm(1tANtVshlWrHjJjn+g5Ru)}zx9v%4=;M{vx|Q3@aTQ} zr`~bl+s>%nBtVO_Klj-An~H%q&o%5d4kiKO|<+meBPD@ zXr}wp$l!2u5{(RtZ$5qqKJNunFxattqce-f>t|{={7$7EGIm2*2=!L0Bx_nN7NpF> zzM@xIJY(K$76wDnJeSm+UnEvO3$pn>3%Td>Bn3^Bz5Z}Pf-S{9rhEj?3V?8@PcLDi z*tseQ0LHyM-(TC6)$R)24b9(fi)n9A{TADFYun9FdztD7bu^;(-qery?YG~uf8%rZ zTy7Uf6lm|$TIa02nbs`r|Ign0Z?%ym`-88N?cRSmN2Wm_+_tgjkJ~iHZf3x60e8>b zb{|h6B~a~Bm8Pl$X6Ea2_8s;O_enM*GwY{PRS{Jo*>krw(-@?JjLeLTh>Z9|gxJ_H z?oA76NnR=$vOk%aJLjhDnrV*QoiFdTurNn15zf?ekSC!)Y98RGPY5!5cs?p-*Ew$J4x5*PE?EQ(Wo zcEl`>W)aNP>K#pdtXNR(j+)n4{VipjXdN0R@VPf0&tuqnqesE_#Wf?RLRqEoaYNWw ztXKL~YoT5Ci3;V7O!cl`K@PUAs_N<%q*#HE)#!{ zOXh&rEZ0qOt4vK1sdJ*uKxLf$`r*GpB$&nfAQGwVw9Ir<2N3@Bo4G%c8ymk3;3xgV za60)`%aSb}v3;x$pdTh_Jhz6P`XjeW=&NB8nTq*L3)m}plhc+~jZ~)N=!V{}a^Ktt ze8j$0H*B1H@L+8s5rMsZCxd9_+(>`DcN-h8%p>JJ%HPU1>M@ARJN12HEqFCxD#y1W zTvXK1pdRc!A)HhrdcOdaOPNX?ivHgGnYRwJ%Da*Fx6A-I(hn5_FHHfBZ3tLZ{2{wRWHV?c{j- zck@&>qrY67z6Dt{mPx{AQo3>dO|-uY{q(7m^xx;|qpehW_S>f!>8X;_j7qC1Zj)24 z4ZWo`RYr@jElu}FsiyO39x{JKbFx2G_q_iV-WR7~OMx7$f77W2++*_$=u`sk0YPS* z-A19(tS`lP&z_3C=W4X)T0AjO;?xYwDLI@f?G2Rts-KC%o7+!6+`yZ_y}u3MyEJ;~ z`jE*N?bI*J34Y_JKh3W+#g5aK{hsqEW*;&U?o>&uWHP5>TC!4&mIi-eOs5uF|Mr^J!F0#t$y2B&x5jQs8>bWYFt@Mq$aV38G0Qag3rANG36w5~AgF+QS zfPVPV8!L-mX*5O2K{TD|`^E<`*q`4B2xE%>_y7KXg#F<;R{)D3aFxtB+XsR1{cw+I zbb^p&8j&I;xz4`Z@xOo4X%a-7zH8k2>T23{&!7;nc6sOa`!CmjucQ|Oo@w`aA|Nwn zV?)`K`+pa^Pqufz7Z-9WmR4jV+E4^p2!#D|>!mtO_!D@%;fn_*gQ5@4f967%KsYa! zG8DhaE3sdSD5jA(mr9&Vap1*Q>J3N{nZ@c}!ZaU(q=osM|1^J*cMJ14(1=5r1<_NTNj6yAcJ?r+59Ra(@yIwmSaBw zvJZp6pC!>$rtyQgcu@DQshEcobwk{L|9<1*a(^khnm7T11ZNtNVj6SFP`77&rPCxx zZ6!m0iQXB~C!2-ss4TV1hEA8R{T3B@}tHPsW~=-${kJvcXx@Cd-hGEsjYD81$xCetxPV7ijKC)pH< zcL#q|hfqd4JK{E)#}M@n=K%U?@&{2CgXEz&n$7}kR_Wz{0QXI#)Ik!NU}$31LLPM4 z*f{Z_tYu)bwe#gTK0Zkxv=D=0hli(rqARB6>QG!gi0^m)#5GHj_v2X2ZWc$s%W+x? z;%dbWJaB*GO$##BmZ@3kk8Y%fGr@i(Qo^ia`Omo@8#`3oD8^C3RK2a^|Nc}0g~%u| zWv)cW$)#dTh{=sV!d=KP_@+2}0OMv;D8}8iw>QOxKWnbu6tI7r;=~`vQ4(FJ;w-wC zu`+U)j2O39f2A^kbiw#mT&P*!LuBnRyitEfEzN)6;+Mn6o1i~5-&}ZC-tscCG}_jF z_i+2@m*|YY|NU58oSu|4MrQsVc+)FIh^I8jD>*iI{w**m6ZNZ1>cj1lU*+PsEAA{i zUndsW2m(_bdl}vWD#<95D_@(_{#e|rJ3~qMTZuAO!)Ae)47Ui5cW|iej+n%SyKK+0 z>70MdYj2#YJ)Q`N5C8@U6q!GTxUUp5g8+glLZEpTMK*vG$`r!RiVPj>Ri9s$nprxw8rD&tz^TbCFAQ)>lRNxl~)U zDc;IY>F{?YrY}7|xcAj6A6#5)idVmT;Z1*}1XYxzH?h3<@8eDJvy8_wfM2;+zpc1% z6YSsH9j4i={i@@xI<#DxpDT$3u`gCr-(6&ArPC%Tij94JXD>-@b&D5+zj&d5R4^r{ zUn`jeUI8vaz4n`ryVB6IQ)U2hB#**_!1Z5Lxzs7*p2@>RdhtzB2eG>db!` z&xj7Et2eYfR6_ezJQQ#Jk5S0ko5K)9eb0;hi|%dvLR?k;7t>ch5nk?k&Av@Cr0tBLtH$Mltm z{y&Pre${}6X54~(loN!}gucnArKar$*!N8cm{Q9hvkEUsQT#)w)(}BXD>$2UNpsl`zB8}lTqMp?2fAo(REGYK-{=L zZp(s267Ezi&4eHO;YT?+3c+Ir+^Oe~zjE%+B()PzNRh=xnK@5NLP~7kZh3&taNA zSr|KUOWI|Xxxp{SZ81^Gk`RS10E;2F8$uFq&h}r5r^B6{ZTKPvKlwMeGD*cNA27r^ zvw}(Px-mb^R9;3ik&M;RiM6CvBYWaPXMC9aZ6#v&gPSN;n?KDiOA+8Drm)~AQh$v$ zfq2=2I67jQ1yKgWEKaYi{}xj4_jDqrh@-10^~Z@$rGW*H;u|m2dFEFS`bu*#zKx=w z!a___AWHNqKU>a)S)4#T3PRjtuH0y%sQ)sI?1nEPS>V=^1?5Mi80>%d*toKT@jRF( zo4T3+)LRH{n!ogp9Rs>Gwz$8qEKTT;7lnl0qDTPrZ~HO zNEEwlTAQ3%YPlgv&GO)lI{tGF_sgn@%%}4}5p^fk?Lz9d+B$(!3=a0s9)APhe?Qy< z(Z)nGQ3n9cP%t&iwarc4ONb_dZnkSIPJ@T(%=fr5n>%QPH&LK=SxyvnKv)q}UJZ$E zcvMFcfjQX;{36ocjge}+H(KNaS7Im8mBTbD`Lb{j1%Y=30I)(DWHI_{CCngLJT}!x zJu!{0pqi04o0&%;JMckB9e;V!((T~e8lr6fTwKqM{o@6?_J{sWB_N-OiT98fK`{UW z#em~m_*=)y3JEo?N_UbpfULit9-n@=+cRLL(4Rs^HdNLUu^dM?p$^T9Kx+8~&l?Dk z9^q1kNff^hqI<3^P_n1#l~ju2LC^A9{dFh?F#cEvPC!7x1hb*0d4FoEkpTW&hT!li z)uqbzBrMmLF`xyY+mt34Lwy#h>wB0bv@vzPgx9gA&V)2B<}*)&A#^&eq6|Kms0)vN zlf4p%8z8mv(?L{~N+?|B$^RE0{UG2H4n+OOG%8V>Y44~P-prwT9XK8#6T3jx!A}N9 zS_NYqe5?NZ?mH$=G=EXO0nM+~4O~L0#bgmp!bH^<(P?g^QzQH0LGTnhzKCjbV~U#Z zZ`x+O^ruo>&eI4mjxxC3l2apznJ(l^@F2pi#SIT?zqDzOXyzQ{y0kIDgecP|dyw?* zE7hwmIjOp@Ns*-Ui3T<6XuLJdO&!P5^*)72iVx{d%1DyR(0>5qqN!yUW!b(+T)_<~ zYCc3iK^-Jzy+o-v2&9rHgW|%lA5Yb?zK)c|vb;V%k;JtJ7~DW0#BmxyfWe+DuH(c6 z5TZ<+nvpB=Go_~&0{VkWop6kquDwjOJ#KQNpJT4_|3bmU>!7^C}Q+)0DvG&Gqip+W9i4*l% zD)#T8@qefWizt&vUSC7y!aEs4${vIRP3JDXP7wePKUtTK`NJhALM#Ix@_!Rd%uptyC^WV8knddsx+oiiRu6Z^QHCMoy!?8-$CRlAw94^ z{WY4YBk4^Gw&g-lt^LCBjCkS5#C17cj7?heV1HT(vwu!@!DM`)#6)bE0V*f!34 zV(m^d75Sn1u>Nr(@BDG+BIivg)e50n*B7|eWrg9gx^fJdRdR{WzSZEC^koqCe>@`- zYJ>6&NT?jWv2m#k`%CXe{N#mPg`)_?LU{%x^d{I6q71;5J5NW?M&CdEVLlA!$xvNN zcz-A&l@AqV9QvLzSD!q2`jm$bLj6!fM+WBA$X?4Aia$!V^zQHPhk<^|4>kJU4?zZO zsXw@tdf_%x3K^ktD9?ay80qpFx7=0d)-DmCSu&W<^ zeMRM}&`7HPY-V#2sVxQY!%JcM#MlB8uXS=CfSCR)Ud7(j69>Wk>d&Txk?zxAn1AG0 zcfI;^G20xYqkoynn&fE*(7SToa`m*Dl3qNO^?O%{YZ4mg-kp+R5Y1Gw4022}JuL=r zqdSlfyDQL8Ozm2F7nN&1TL;nB>qw`oGtod0=>-j8sBX3p1;_%6ChVcU1(^h{x9r3w z+ebfcAH6xaINUxt*uUIG*5)gSrXt#p|Yg7rqV%s{1`s+H-=V_qJm7nG()GQ_mOyz%2WUa9eDE)aA}QY_?h@7j9Jd%pl7TuE^hNi^_pjQWGV_xEGF}xb5EBy zFa@F#2)&G+uC^Rr(*aU8V1M4dM^RIpr-3;pIQdRHopZs`uE=J#T@n9Fd z6i4B|q=nu)BYL2T7NUAO(NLE=5|>^8LCXuXLj%ZAe7Xa(E21o1^M6~rw~Er82Cf5e zS4y(0RDQ)`qGj!_D>u5c&6V&PxEzY7>FGa|niKHf2i&;Nm99w#kJW{>vTdf0gewyYDK?y3!{P5VwIKV*^u-XV<*hTjVw5}(Te za3f5cnDI>%-2^hXaevf|F3c4|A5$@S^XlT@vCf`bDT}V%x#b3=@ zs`kctbg_+C`$Idn7IlqX+?QhC05pG$qK`_zDg#R}^;C3PODmbP(@Lt1RG#KmHc{ax zI+Y;#2<2-mR8?HTGi9q-!+TBlQLTw?7AxGto6vS?41XCw$xyd+DoSH3Yuh@z{nWz# zJ#lb+WU4l(_ijBPF*p*Tu`()-v?)oegmn`BA&W&N91>PU;xj`(;S z9WYr-PFrs!yXVG{)P{NkkYaJA%>R4cvwQkbYSe8}+9gCY(;~PrCaYNmjQHMwi@CfP zuN9BXV}A{QQhaT}+*!?6wG#7i5^bx|BFNXi(;*Z9Nh*HfGN#=ClLc+FA#{T?#o?0( z0@PlhHZalT>eFFqh4&XpRaXEBjx0~-v`Xh+i~W(W_t| z<(fN2b->*JGEWLS{-u%$>JVR>t;=fUCmGkmMSnV5 z657F}>fgk4tGA1wOC6Y|$U`dSn^dgp67NB8~eEtJTCSF z-SuX!ED)}dG13?!5*t>(PRa{lZuW(>p@h~%38+;5Lz|rcxc0-zKQv!F-+yIOAa00{ zljK)E*uBYArv6x@_tN`Vl_S;3KxMUj9%ChE<9}?5f2fDkf4nr4_?~YPShbJ`?s&Hy zcMmJJy=LG~Wa{}rlGT08cipbvN;^)jL;$$)IZji_CK&S_eyl7%JBLi~J73K=*!sd%n3`}Nl@ysz#l%m> za~%{)#6W&Bt#;HTMut>Nyw#_Sy3`G*aZn8gaSSA1&2P+|I+@?7JFM}dfhdfi6RXA( zB-tfTcb{#U&q`ZXIwo=vDPsk$sQCfT?o8R0^vL=L;1cgmqFHKuLw|`b;uzR@nyEpN z1~tL*w7BN8zMFy@d(9OWcy6i%#;*ec;bt6?6T?)dO; za3+CoN1d(hSWcnOr)_oZ%Upk81nMY4SmI88{;-0OZ8@$8LDnr;s&ec$iO1Vh&kwhM z_wKxHaNx}%9f{etL7r^@rtHsVLwKMX(Je~KZh@z)S8#XcjX%QuqeQ{bQt;>Ibs0V7 zi~24bY4mJsXHWgVM})UFlCrSCiwBE3^rPX?>EWlboWW`?o$l!Q*3N%uYlJP&Mg+e8q_L$zqQ+^4^#sUigSbE>CEsH(>h>I>jDiybOT=O;j#Kx#!Qs-@u|{A z!Wd?D&W`goG-X2IUuD}Xp>pltFr7h+?S&;w?M-qZ;d3V9P~lZ9bw5KAd&6NSl7j+)CX=3V;Sq>Iib%MV*pd z{us`NKjxx{AjMlKGEQ%{^GXoyF2bfz)P7ikyKvEk5%jHeoxoQvih3%95=G2g*i#`G z!p@~PISqpc{;foX)X?;SJNGP>myow#BYz8y3-cBifjw0~M&MtPC|n(pJ+(ra$eaV2 zN$jZ~G7_1o>Zu)SRPoAVR16M5+^Tl8r@EN?!*@OtEvO(~8!f!Mhl=i%?z-2Xh9&Us zaKHF|`HfdQLUx}q#_p;FC8=TVCZ-`0fsyx2jvtKV-d>(%M;r|WBis<@^DxN}kAL}Q zFD2o{*3K@T1Qd{BW1DHh7|}VKU#UsjXodA%3i(NWI!Q!{#l^pwi0T7dAP(gef9k}< zlzM5T{jdvRUArcbsjB|D_5m4U9Tei{!}E)y)3-W-`^iN6?(Ii|(WcnZ|4-w& zeB2_WcE4u~Tk)(HDx##AmjTJf%(TSPvLYL-pJHEGRQpSn&+0U6Zr7H z@7ZRE;4UN#g^NoGQ{zFWp}zCQe7PotZBiV8R9na(Q+aspO%Oq&mxD+I4wGFb!rC?> zX|ZvLgy67gWkU4D-1O+Dd@(>Zr1z!T0n-u!TgU1c4M2n_kRTR989L}hO-7*4tP?-f7 zG3I@U`ZAJ=Rbuc0;*L$gbzsPDur;4-?L5cxb>EQdE?Q%{yB95)aos(llT<2il&o== zhs>@MY+wG-Yd?^!yGWZ8Rwq{GR7|GKefo_-eV&c{Hd6Oci!Gqc%cKZ?v`h963FTLQWPZQ1ulK7H7M;z=2#mlP{`>leZb90UEZMM|nV{62d1AjkbC%}zV1;xMf!4oEe78>2p;;0tvaes8{0}!ZUAn9aR61NOxY~3&0D2~Y&=>@%k5%ovr(=npCOe9N{_o>+(I^- zDA-y>7j}s$TBUTF?oItsb)a75C&){2hsdz-SXX8O(^466ftsP53>zvMnpt5PmZE$X z4%aW%vVVlYd(nXfksjaNG5qfQD98h*%#|e=XycWDzUy@>ZPt2 z&ZX^Gfmi7TR%0+p-WPq+Er~7x;!a7R61$=(-)D5?ITpqUw1!$A8#5+s$6oJ-P>Z{=0VST9v-SeM9BERy+;h z;;j;o^zMQSWVE$|yylEh`L3e&TH@Xfb?vm`JdjTV&3!XMWyO~1UMiuei$;~(3&vSh zY}dS`16WAQludXiA`g;e`I>y8BUH|-gZBz&XjyG%?ofxGT)6{ugsgzO_|l}=sDG-x zGumUMZXh#g$0ZX+x9131`WC^yWkzM=Q;ObU^1h5vS+GoFAxqVo*Y>ulms}C7(0TzX z3`0|IFM*Z}#xnwK37|BbcAlHMvQYb8{iil+dmfrrGQJEZOZ&P}=R#2*oJIn=gl+aJ z>HNgIla^~2ID2!I<{PqPZA}E1>VKFuN?s~4)QISU1G-;4fD!9#Y~{T5jtDfqW-i(U!059Csoq~x~YIba-sjYh$r~lGrVCA$$!*k7r6+* zJI=X$)E)A73$$R78?ulTlcCKUvtGUXQ*vxcP!Z4E-L1hJJD^uk(tJRvzT~W!QxPUm#N_6UQ_Nw}x@|Cgf zC(Rg5c*6V_*wBO{Ql_!K-G70vsY2;$Tur2mSobNcxSHyRafL?_l}uYEo6FNgO0CtK zSv!##(^dDk%8!s)i^G5H&s>I>OD=U9NhXzf|tY7RGcDK z9}_8ew~29UJj%wR6b-|5bwZ`oa*ah%1G$%}bPxG@oJ^>E*Hu^pq<`#Jcx9>`{2>L? z)>)fP)uR$$7v$`U{7IzLSf_aX3j9f^^jVZxpbWZ3Lm!p%YRo{I4&8F&NAgPQc#(pTw`GkS@uJM6@%4763qsTCxT*v{%4j1 z6Td>8l-X>d5}5cJsQVIS!A4&yBX&eiiFF&Zx@<|sPuo_L2cMKaBBjEv+Mp$8zS=XY zTl~pId$x4bUXwLTN_yqeALz{0mI1M~s7I)j)vmMqE&JOC(SJfCxWy{LwjG>W16n^g z+y7=8Iy7vT*y4-zhpTkt`QO|u&Xy-`ZAzr9OuZxHTRHx?AK&Pv$4m=D=uKhCEp>Lg zf-aTG5W0!`v3whaZ`E*(g~sq+yk0fa(*;CQ>P^TCH9+|m05X-j1LmJNMuBq zv&u>Zp^(GG%=aMbfTf^677p7~50$#YR@@(#ys{yFk^yuJ&qS?hOnmEw zlK|}4L~nVr99%%731#tcRr^OJoK&j)7s`n3-qW*M-)LuRgbtrEz=vofqWy;jdI&lJ zKoAySD;Y)z@|u;Q_!*p_$}F_aChVv8Q9SwF#D5fm(SM<&4fWsAO&BTNr~?C=LK#EC zQ^zC-G)d6MTAAZMv{={5Xu?G!+GhzgR&#&zuHoiwWrMfm1k)%(U*R{bm7VS9FKWTe zY96SyRF{SQAIA`rd;e%tT@JjfvAS|rF3Flrc&Nr_qtK{+b@+OfR1>gl6sq@sTp(JH zFSfTKe1E&Z;7qe2fZNQ=Fz_}r2jf#&HpCAzC~}<(CuqcN1Kg0#$wUu6A3UQ+Z%vh! z&C<`hg3P9v&J+EkCm@U&7%9p`Gdl9ssK+TIq6>Iby3|}nQ6Rl=*}*WnKHuL>tNis! zHM>_;3Q|U-`hke5rJT8lupl%}{j$jV#azLaQbQWCXS|8dlJ^_5C3pHDxo?j_Vkzr@H%lQLdSXtUEnWKleQ4^O-Vf8rEFs_Galz2Ajhq-{?SC$E zC_Y(>9kGL~%^aYa^YgP}gqg`d0YMx_;nu%o9Eo|D_&1@hi8o2N`<;yof}O@B?9Uqc97Z?;CpIk#i}`A+``{Xmoy*o7~HIfUb< zQ#sKWy(eM^-psw__qR%rB{L=5^v5INRXz@63a#3f8Y|S*wuVgexg+P|EOdC&YpUE!g4QFOAaexX(%|nx_?Ki*}T9L z(JwWGHWXjY4%)cnJ_lhc?z~{0-<2~Vt6M^<9~hUPiuJN`wM3p2JNld5XXdN;CNa3+ zf8%f8IaUAKKp zoVHV8;HJ%I?-FTtDiajVOYL7G1x{6hprFAXerv@_2b-8kyi+G(mVb|ABNK`Ga*E5H ztAkvRMjM(&hdX-&Nk?y+nn-JBCAHkfwnTq1OPja?oz+}l%bQ4NXT3(T#ECR@Rys|V zGLeR^N`!0tuPL)-Pp7s#+oNT+=>E>zy7BcF%x2M4d?jft_}pJY8jH>Z2>ocN>)tiD z0NC3ajkb25BZDJ-W`9c>33L0mvu(=O8Aq`kzM1%Elpr%n7`N{CW zd~+_7dBBxLM95x2P$)A+lM|b(9wvGTc`nQ8)p|QFQ+o#QaMOzM5I4|ja%LSJcbUj@ zr_r?NsaATY68`$|ME}F2)ln%pC7E{pNwH)QNRx;&JiSu8eSZh=f@42fesG8-7S<=x zQTaFRu~>8kNnF0u{@GCmZqbTbC@C z52uNN_dr?r@TR$jBy4dRcX|n82Gz@l35%M`k;Q+g-Fo)x*FS;c3+#naqYcFYT&9iK1-R_uz&G!XL}HzfOnk?Z4?-IeYnPTht-yYz zANkm>m*ArfwRXXW&)nD$YGv2Qa%&fL=rjydi+{7qYZW#uzUN{=RLVvhJa3svOAN$4 z(Q&x%pLdSKop_-K5&u8JakRW0YB(ULT~M`OCQjc|wPdx!ZQn_*^&_a1-sl13N}*zgOhaMR0$bG#T-vYljiI;j}GM7-rUc2Yjd5Z4g z@91#sOYx`V{UfGp1S-JCG!)kDf?3G3!}F7)3ur*&T2m&1sYQ$2JE?Y2JH`K$WPh9L zhspf<+8_JsPl%a}b)PpVdaORXhjJkK&cpASes9196D95WcD_#mJlas`h~X^u@6-@> z&&>_dws^=+OK~fKiY4ZeLB+?SWdm355LD=~WhiU~eRLD4$|`ANPD~q3IwA%d>-w$| zQtNlkx5jJ zV^}_zwx>PFvK#+ShS@Wkfj?_BoPEb~((-!S#7Qvt)rliw{pwcLm6vHyI?$W-L)Db{ zPxEP#S|Z*0_TrOCVNP*_jyvY0*u|(d_vZ5UQc7kl2$gc#u>~2_9G-(xg@4#3!%AqT z@>!_RB-2n>a~sv3j=+V)^3Lqwz~+)3cyu7CE?u?7-B#`O>${7?b8&Eban%5$)t(bL9egTx3brS6ciJ(M8Vn!PT|t=u18>xA(^o0nn}DwCATZ9Z0S zG(Z+1NMbxh_hsuCSfJONz@uHC#PVaU;i-mH0xLDIJh2`p_CL2TL1t+1G|{S4LNXyY*$ zzSyC#5{&tJ)wu?o<;Sjx0BpsX`V`iw^Xv*U7Ti_dI*86*<=IFzRI%4XcS*Faq7#pD zbC)$+E;<|20-9weftLr)UnT+bmoCm-kN3L9!3Usy(@J}mDqdQB~`-S z+LJ%hBy1r$be?J#Aim=IMz_fGtr2o~YJ!9w-n1PX9vHA-6gNQNNyJbSBg({F=zo|9 z>5HtwkHk`j%p#c2VtMU$=!v_O*ybLa!QB@Tsk8#F;GX(JMP z-<68@m`ZF}UsQFJ{jry3?NBH4SpYvvU82DM)S#`2#NvD3Er(9hM(n1;(eVir44T`%ibX1jT z6T*fz6I6x;(@-5eze_dWclO{8e^*z%!TU!7dh*n^oNbMIdx(kSF@K;6u&ED!LraQfY(0|ARwLFg^)H))CuR9r|_c{WV?Q4jokqQ)E;6Lvs(QC$ZhTUl%$VDqLn+G9ez=R%p znu`dsg58s^cw=Oti0lO;6MezFc z>UTL#lVP<7Xn$jp*HhM(QOzS^mw>5uonDg5sB-oAstVX;5yr2xaNQcJ!u2d;H|4Kk z*2RMVGBv`!vS>0NP@z-j<_*ZPhjJ4(!f9Pb<%0A~t|MG~DK^+bmpEz##!xprh5V!* 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 diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index b501fcff..03511fbe 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,55 +1,55 @@ -Oct 12, 2024 1:30:34 PM reposense.system.LogsManager addFileHandler +Oct 13, 2024 1:24:31 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 12, 2024 1:30:34 PM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse INFO: Parsing Blurbs... -Oct 12, 2024 1:30:34 PM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse INFO: Blurbs parsed successfully! -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 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 -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 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 -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser isLineMalformed +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser isLineMalformed WARNING: Line 3 in CSV file, author-config.csv, is malformed. Content: https://github.com/AY2425S1-CS2103-F11-2/tp.git,master,,,CS2103-F11-2 LOW .. IAN,, -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 12, 2024 1:30:34 PM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 13, 2024 1:24:32 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 @@ -65,2167 +65,2167 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-1/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-2/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git to complete... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-2/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-1/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-3/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-4/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git... +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git to complete... -Oct 12, 2024 1:30:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-4/tp.git... -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-1/tp.git... -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git completed! -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-2/tp.git... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) completed! -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) completed! -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [7/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-1/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git completed! +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-3/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-2/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git to complete... +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git completed! -Oct 12, 2024 1:30:43 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-4/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git completed! +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-3/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-3/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-3/tp.git... +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-2/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git to complete... -Oct 12, 2024 1:30:45 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... +Oct 13, 2024 1:24:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git completed! -Oct 12, 2024 1:30:45 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-4/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-1/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-1/tp.git... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git to complete... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git to complete... -Oct 12, 2024 1:30:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git completed! -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-1/tp.git... -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git to complete... -Oct 12, 2024 1:30:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-4/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-1/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-4/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-1/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git to complete... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-1/tp.git... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git to complete... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-1/tp.git... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-1/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-1/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-3/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) completed! +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-2/tp.git... -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-4/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-3/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-4/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-4/tp.git... +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git to complete... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! +Oct 13, 2024 1:24:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git completed! -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-4/tp.git... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git to complete... -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) completed! -Oct 12, 2024 1:30:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git completed! -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-2/tp.git... -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git to complete... -Oct 12, 2024 1:30:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) completed! -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git to complete... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git completed! -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-2/tp.git... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git completed! -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git to complete... -Oct 12, 2024 1:30:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git completed! +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-2/tp.git... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git to complete... -Oct 12, 2024 1:30:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-3/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-4/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-4/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-3/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git to complete... -Oct 12, 2024 1:30:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) completed! -Oct 12, 2024 1:30:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-3/tp.git... +Oct 13, 2024 1:24:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git to complete... +Oct 13, 2024 1:24:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git completed! -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-3/tp.git... -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git to complete... -Oct 12, 2024 1:31:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git completed! +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-1/tp.git... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git to complete... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git completed! -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-2/tp.git... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-4/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-1/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-4/tp.git... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git to complete... +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) completed! -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [20/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-4/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git completed! -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git... -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-1/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git to complete... +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-2/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-3/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! -Oct 12, 2024 1:31:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:04 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-3/tp.git... +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git to complete... +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git completed! -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-4/tp.git... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git to complete... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git completed! -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-2/tp.git... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git to complete... -Oct 12, 2024 1:31:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git completed! -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-3/tp.git... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git to complete... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git completed! -Oct 12, 2024 1:31:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-1/tp.git... -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git to complete... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git completed! -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-2/tp.git... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git to complete... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-3/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git to complete... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-2/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git to complete... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-1/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-1/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-2/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git to complete... +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-1/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git to complete... -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! +Oct 13, 2024 1:25:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git completed! -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-3/tp.git... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git to complete... -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-4/tp.git... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-2/tp.git... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git completed! +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-3/tp.git... -Oct 12, 2024 1:31:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-4/tp.git... -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-3/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-2/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-1/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git completed! -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-1/tp.git... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git to complete... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-3/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-1/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-2/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git completed! +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-2/tp.git... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! +Oct 13, 2024 1:25:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-3/tp.git... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git to complete... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-3/tp.git... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git to complete... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git completed! -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-4/tp.git... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git to complete... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git to complete... -Oct 12, 2024 1:31:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git completed! -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-4/tp.git... -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git to complete... -Oct 12, 2024 1:31:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git to complete... +Oct 13, 2024 1:25:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-1/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-2/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git to complete... -Oct 12, 2024 1:31:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git completed! -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-3/tp.git... -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git to complete... -Oct 12, 2024 1:31:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! -Oct 12, 2024 1:31:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-2/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-3/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git to complete... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-3/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git completed! -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-4/tp.git... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git completed! -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-2/tp.git... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git completed! -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-3/tp.git... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git to complete... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git completed! -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-2/tp.git... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git to complete... -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-2/tp.git... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git to complete... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-2/tp.git... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git to complete... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-4/tp.git... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git to complete... -Oct 12, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git completed! -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-3/tp.git... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git to complete... -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git completed! -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git to complete... +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git completed! -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-3/tp.git... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git to complete... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! +Oct 13, 2024 1:25:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git completed! -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-2/tp.git... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git completed! -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-1/tp.git... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-2/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git to complete... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-1/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-2/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! +Oct 13, 2024 1:25:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git completed! -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-1/tp.git... -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git to complete... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git completed! -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-4/tp.git... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git to complete... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git completed! -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-1/tp.git... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git to complete... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-3/tp.git... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git completed! -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-2/tp.git... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-4/tp.git... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-4/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-3/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-4/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) completed! -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) completed! -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) completed! -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) completed! -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [54/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/120] Analyzing https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) completed! +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) completed! -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [57/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [59/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [60/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [63/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [64/120] Analyzing https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [65/120] Analyzing https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) completed! +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [71/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) completed! -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [74/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) completed! +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [76/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [77/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) completed! -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [78/120] Analyzing https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) completed! -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/120] Analyzing https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [79/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) completed! -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) completed! -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [83/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) completed! +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) completed! -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [85/120] Analyzing https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) completed! -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) completed! +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [87/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [93/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [94/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [95/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) completed! -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [97/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) completed! +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [99/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [100/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [101/120] Analyzing https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [102/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [102/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [107/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) completed! -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [108/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [110/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [111/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [112/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [113/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [115/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) completed! +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [117/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) completed! -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) completed! -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! -Oct 12, 2024 1:32:04 PM reposense.report.ReportGenerator generateReposReport +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 12, 2024 1:32:05 PM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 31.38 second(s) +Oct 13, 2024 1:26:02 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 30.79 second(s) diff --git a/summary.json b/summary.json index ef67ca90..73da15c8 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Sat, 12 Oct 2024 21:30:34 UTC+08:00","reportGenerationTime":" 1 minute(s) 29.94 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-12","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"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}} +{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Sun, 13 Oct 2024 09:24:32 UTC+08:00","reportGenerationTime":" 1 minute(s) 29.35 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-13","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"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}}

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%0A%B>A59W5 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%0A#W&y+dG zm3UAqyCIe9nFzZs-4Kk-hgiTjr?@b!P2oLU_rAUY2~s5;9B9`YtD0IMkx|%;_Cs>r zdr~=8?xYE1Ki!UthE$uybnQvCSxie&I85NPohB{nW)uOSB&KC)NeyOMM&hNGkIwlR zxsvbflLi;o=OWu06(0LYzwKnI*@yIPX|4LKs+N6r-qup^>@)HfrGMj((!&%~CIQ*9 zPs!VsglyTz;E_U=Y#GM(0d;m=`Of5bETraf<^S5p)NLs%*FKJJOV_7H7F26F8HEM$ zu?1RUIx5ZKXD*&VN=oPB38chykFUUhrtM^jr106#4R!lD^GI8yv~{5-b~Jjji(O<@ zmRA^sT&8-f&U|)KLVvr~G20JMZ&jnH9^aW$vn)%eZlK^jcv`|cm(tlHWxR8(Ma!Es zXFSB@LADbnW~y&7SG`3{R<~U0Nr*!Pe7>7aOjBngvKnh}i0S3cBl8@!K#g3Fln0&%6i#u;MtA53dE}fTmVi zx?w0f*-}f47AcFIOHh&0#hKP3rHivN0aDg@p$!$1{Rtm|kuu4-PLh;M&b1b)((lH(E@nkaHD_C_zGU+jDcig`1nN<`6x-Dyjt<$LGDXWqFDO&n zR-f$f*3;f;_^BpDFz^GBdB4)48$PY;&ntu$WiRH3UBPo4dG4k5Tft2OW$KXhr z?re+I$lz)m0@5NSv~#UhZ)A~_y)O2|Pq8;1OQxB~Em9skUw2SaDtq%zZ;`DzBWZhQJq#A+@i&Tmh^$DIGqKrxX^HZi9@S6;e-^y0qHrOmZTY4luc5fwF+dM1)?EM=&sUF~4UNOOh% z6akImw7y+FK0>ud*Wx6=+uMBHgp{#wv0t}QyVxf7oUgo0Y_Qa-_O(f={%niYr}njL z>_FeHu?2mbl(WyK_O)qg`+MTt@N=$Z>wnezNIChr%sTb@DWm#F%Fq|W{EoezKRn># zHpGnmya7n+b=VsJw5iSI5$&g<6Qx`YmfNIEeJ-v?%Ejket42;lO2p?{tJc(tHmxc9 zp16d+m=b8)w6uCQmPbmZ=UR)xWtvg!g#)(OOq-Z3ZzAO1_a8p=4n4N98Fez48h>-= z+oat2<{*}Q6I4hk^s|F}+{XW7JIESy8``8CdZx8V3G{p%mDmtnT%&@)#Zqah@@y=X zlmV|aD7L#nOmnZHM{}E);LhK~vQ6xPt}4Pz2g^UHV`$7?VuQtrSrx(H9h*dRQJLr} zEFE~`M5-Ag>NhqxXf7#B7N5q<41Ykz2~ITEQ_5%I5fkR~%IGj1>T-x3c`HLc2O&9! z-kL+GPvjTbi9O~6p_XoQ$yrinJ>zmT&X^AOMaotI)28)Y7ljBgX%DlwHtlP;Sln3Uo#3O|ieQh-XA8RBb*rlGH*gBsS3$96-BRRLT# zw9YDk_GVQ8t;S)i(P~lGqJMBY6Sg16epr?5s#k7PSEi|eRsI&otnZdQI$lXH;4=;u<|_+t6|Rz!@;9P>=*Jn&f!CU{7t1#ASjku6)j*2nCtkt$-pGeHUU(i`JS z1$sIKf@`RKe?{=dUOI$t??v6@AeG+eVD@Np)Ptq^eju->e`9GLLf~LW$%E7PbE)?( zblhk(n5fldRS*u*1TGG0t~|?INp;!ssh^_pH+x$TWK2M%)_TL6C{FuP;78&O8-!Ns z-ukgv$$Z(WJWE>T^s*(t|Ni?7>!;$Z*NbJ6{18Q-#S1WQ0&&Cxl2w*(7YkMqzHG_j z#v9qzacZb1e|j?cjJmF;9|6k-o&mis@Vi>`og}h{O=3V9@VY~^`>vvXdgp;?ya)#X zk&N+0RDiqwIFLzGT!V^?9X^GRDg(%^M61qz3NPcso;ZJTxvw(c;kBWMfINS9DY{@} zVsmHp^k2PO@7dp*;!@2wy^H-6c7sDr@eTc9^~nxge|6D16rW#2=S?2uT9uRSo~J$S zec77NeK5^MM+VWIz>^qFm9~%xg9PW;7Yr39wAi!Zw~QAj#=j@__Fl<5@eJr_63e|k zb?Jek5E)*_5BzkBxS52#=m3_DaMt{-A59X#-)IChm2lz8Nn)UuwI_ZWdMRFrUL=!K z;RSHIf7%#Tm&t&QuP;I^z!DPhX-}m7NH)=V)0OCR)St;8>v~8w0$n>XUhK})TuEF; zA;dh&g$5_Fq|xx#Ns_{vUDKZTdI;CQuMbrCBOvKpW23{by$OiZ1Pm1QfiMlGu)VGa z2m@3owBe3N-e-X^U02o{|U-`B?MK^#| z0BwpN8F69ANrY+){g_ofCk8z-9C~3_4}0F3k} zh+oBRWBJdC4+A567;g#$n; z%&0s;?yYWftS$eXh&?evqtxqmCo!NyfBZb@4fL_YxeP%Xj3(WokbMx?K(zQe$l$2> zWGgsTpi9GF;;UM0cQt=W5P586WhbyHI?VQ#O+Q z1`3G1(xnQws(oOtcE}zg`2AZsj;>?~{1?9b^T(ZCCg{F_>R~T|slrHR-vN1efBISi zPMCmML!Wr5!02HMW8hD~Wp8d<&7&JI0q~cTxO*dZj`DYRL5C2}{q)C4hY4gS+0V45 zlQhLMyO@d2vKTV_GT}SIH3ZSSaZg!9$dr_Yg!vsJ>4N?t#m*a8Qpr-80PycWeE9z8 z2(H||{`DAs<+^@O%-(3TF}7F7e-tv5pI!h4BtnU%C@je4fnv5`x-JK+fa@g(2FCJ1R z*qrZM8fvo-BheY9xxJdKdIPA}#|V9AGSHrcWHJEDUAr5R#YS*{l$UsvWcF+qfL*mU zrajrK)~fe(6@e0khIxMdGrKS|#4nA51ictuFB+%XWtO1(3}{hre_8Kx1aQM%i#z1n z+BdL$>;-aF%;P$W0zO^YUNKjFoR{$DAXe(K@w$kz*JbCGm!{L*Ip;W>S;il@4r~pl zX9@Ta7#vt)!%0VsgUJAH)6TgcgMdH3%%R7N2F!3AF~R%|B$T~8Z#j{D`W2mT=nI2e zc@WDH7z*$wATEl1f0=U~HPX-Pz?)w`tqCYK#D4tH9$O!H9e^n4-lYt&_2>G_&VRbD zGq%2L)tX}K%a%8>b@R43NB{9R3$JheWUQBR*{WL%uPjG5uP=l9e^qe33JHIN)~oUJe@9?_f6PwJ*-}Z+ixFM-!ev=RgT)j>Qy}KUIx{-d}2;=^gaaDs}As9htw-I z*nhcz`j*MoiQU&7P_HD>dcx_;LAd{+^lI3DZ(;N*VyH8SPN9f<6hPlD|F8$pt5vsp z0_aub@;eQme^;7~_dj@E1^(|dbY8Wi-*w=8yG+9#IIm(Fbp*~=C>x3Lw}6_6*9#Qk z?q@v>HB%h785URS(00k{CT9EBXc&s8 zk^E-i+HIeRRYzH}=oW*uOIG}bvD&TTz^YCxS@DlZe=S3#cB`jp57aJM@;=3Bw~G}Q zW`EzKv`fJLUlpXSz`-9e+Di2N5u)8VL|cK~KO(eiMrgOo{#|sOf3^7RRxxW2&sJde z+ec@&iw{>tqxRTr1@pR>q1o*omy7hg4}sZ=)4SJk*(#m&UoI@WU6OTS@^uGgtH`sS znCwyrf9`)swi5K;TST^k66y@d63F2m#bdY1IPBrrN>#0%XlwGF1o%S{&DkHX~{cuVV+f05zm zXxL(ie*c&LraEKa)+K9-d|TJPFLCefo`v=He_5B@V$9pR-ZzYRZ*l)tjm^5=AJJ}x zX!jOR(jM!!E_k0J-P^ABtONcM8Q zfAn82j=fD%r8D%pW7x~dvYrU`lJ)O@{JH}0-&^#0DGk&ayIx5M_b76`MOI;tTUV%J z^+c_glF08gX1(0#yZ;gErLg}#-aprDu50tEi=WD;=U%&PXS z0h|2Nm1BLj2F#1>mF18=Y8NvN;J7ylKU2UQ0WS@j zZ>86J9R|}vnn5KM0{)IRi97!?e+>uiqa!kW_>k94(HGY|*S{k?mA4p#SL?8G_;8bO zH64RshbK|ke53xU!rfsDz}h4ly%i~95Btt7b+ETIGUd1$g^iKKc{hEpn{E78CJ-o$7yUYXM@?a%W~$r8e;3)Eq$Xh? z3;*H&VhI*yn3$XgltW8BNRDb6g>M?@{sO!l%m@S5wfvH*V0sQGhWFvnw3V9$D!JgK zXtf!f8e0WqWp^k8RVqA#^x=Yz!aFnQ(qW8|+<9>=F8i3sAmbQ4As9SQL~jxo5)CL| zJBfCC2(KFKvh=P18U;W6e_IJEUB27ncUDlDn3X+%XIZhN9-1?fJ6CD(=XKk zeX$jl$R6n1itw~Y=N!4JlU8L9lG#c3ZGm|f^t`d%zw<0;kCZLBwVUW8!_sl@6 zU&rUF57EH@vB$gIcqq~SvPZV8cH#<7>Sp)ZBT!4%6*LO!V$QD#h*SkTT>!N*+6q9I z(yH6K_PEf}b?2;eeF}z_cKh$F7j^4o+1E^|UDCRet0+miTujHWH+8zOQQ<*j16`Ovq#4t%28ajrg)o$ByrBn3?M2*jzuSnkU@{Vqh@zzMtmF_w-Z&Ltld9u;kP5JVc(?=@5K3~cf*h;xMLa@# zaCrS3g;ij+w;c=KBz1xcoC7ER#<>%upz`YEiGuy6A_di~3jd!m3Vjc9JJwDxD)_pY z@^(le>~E82Ligi++dPxCWyJRKOh{31D@^Fr0}Z!%B&GjlQu9dBZXStE3SF;GhM=nJ zB+GVBsL0MG676>A(|iiNn#-qI@SN2WQXd9$)w-+yQ&)rFzkPkZ_1P4 zJ?w%sJ9+$ERx}v}Jz{j7l6iUS0;o$as;k%6f7rybR2OO^`*o*sTPP z7&z6(#t`9YgDQGLb`02~-*$gjJLtnn8c(oiktcrri<&A~yqI5g(>LU01J&ZpJfjHs ztIFdvuNX@Dx;!%Owh4w%klTv(nD}y0S47iJ;X?1vU#eX$t;QZ7Un1Mmp>NEKj0-{O6l$Y1{&|j4-dF>EmFvy=aQ3S^@|zIU7F9<4ICG4Y{1FW-VMiDU`5*h zXrA6Fk|dMnLyr98PYHi*8O&L0%Ix|mu~Grv6Bi~)N)uo@KXT+BMOZxLlH%m}fA*94 zAVfcZXuf8j}@ODv)Dbmdf#Gx(6_FCE4eBx#9cG zeiV9VqZwa^-I_u90uSSUZ_ZXbla5+`_FM*2*nFO;!}S!Ph4Fn?l>+Z7J#2e zE$)X2xer~$#&X@u355?gP33Y}%7vkuDza^e!-rHAoJqZXxKV!sr+C6cD#u=}-a3W9 z9y)rlDU~2AnFJL!7e;Kz&MvT+VucT>Jap9+r>@7K_!5_TMCD-2=G7yz3s}?Nx`i#3 zH0coXe6$8D%xQnpt>VTFk6f&gI`Lv7*7yj8E7kma#L5~S`k*+n#>%pRYM$r-6cbNm zFKBqg!W$jd+mtubmwL>{8{O7*M? z&!vcfjSgM-peDdM2)9t$@VI6k_?TYWxzx^eNk})ZTngV(5_Mda!YT9zS-g_A!p4@(^YNMNsJzTYXlE%^-HP3Z{M-(qFoNxoiwYH}S%$53w z36M>aP~3l3+OTb;Ns50H%fA1GY4dA$i*!nveuAY9ZQ^y@$ZBy~iB!9@B14&e`AHQy zrV~3bUKy*-<*NGj)=zxwgE7ijE)zr~OQkwV*woh({rKACKSS@QF{@N<8NBe+Z;p(4N4&8bi8-ADue^3~tY zUR*xSfL}=9z6@`@z@LTWb&Tpe@!>=G=hmO9vb7x##4$;QvZpr}Z?9gz`tdlL@ ze_T9;H=bVneYQ8OHP9SV_+d|e$!03{a0H&OH_o>~D=Wt*tOLn6+vuyem*>`fhB16s zahrdb(2dE9eyCbLRpnr7t(jV@M-7h>wyC#w_36ds)irGH_1`Yu{_XPOr`ZO95_@^4 zD%^(beaCii`sum?y;El4=fi`SlOV;}#{%em z0?a%a%dP@rHqXRSOXRONH{`2rM}Pry{l3ZN>G(nz>>FnO-2Gj8gI} zil1hvd1ElMqkm~On=`a!@2$waaoB~6TMx7-399=7G)){vn+}DE2p)3XE{Zw9w3L5K zdJLG*Iu5GO((F3N$}{9M2`jIpx6&;9XtTB%^>-G@r#bS*hQ3Zu(@1Y*H|x8wGc(Vd z@TN?wGSD1%vPlw+<5FuxPL@i(e=`@i`E%rlJ0Bi^4B4MQayA@o9AR->k0I-ZT3SVA z(^Yn|lT}Wt3NljcnX(piYcx{V~>6Ik6f+zm)F7p^d$-Bw($2GmF| zllrF}H3mmjktR3LTzGL&Z~bB7V`Zl3n12fuAf*SYLZMEOI!$8JKL)m@Hy+EdHYas;YS3U=^bjufPhzachNFyb-2URt@z+64hkt<&Bx$ z@an?3=K-2wNr6={`pgk1mvST8fOVayt zJQ=|FFlFWWofua2!f^12jnCc4yb@xMT09~GsIzR^_dz-9d@Ue@na7j4bCnK zg$u7c+%Y2K^i-D|WDhof8+e=CqV-vCvIF3Xrat7`1@7}sX-tjV?qvkuDB!c;_3I9f zcuktfxcpeYio#d0TxCV!NuxzA!gU6$BE)1``4TjZWKJm zv@KVkAVT;C$I8kSz&ou1MAceS)AjA~_sS502B)BgD&TZ~4%Mo%6KV%om);d+ctDZY z@Zc|OSaR)Nk;9|3UwwM&w`z#!TAy=7K8HvdWeOtw8yiHfQJfqiV~#7BvftUDvhr?< zn>GipY4Sh3c4HD%z{xb!oMGz&E|&>AsZrHqdkhkzIfP-8QB&5 zy})wW?x#I}tiJ{qyE-|1{OIuUlONew89n~Ll$HH88iwL&B>B+g+VIH2&YnDe^zh{P zsLgj%*XH>%j`lNPs`nSEsSd3*KIqn#07dS0)N1XEbKRZX7iYIpwD-mLXiuN8L26G5 z*p%ZvVqAGmbbGKr&qOGq} zjsU3#=ZXLbb!w)I&g%DtX`?&z63v-*)ScXaUBQ_g;BnPhE4ryJQ-7*?mjkRWT(nYn zIjp&1&nB0pToO(-S%3g9kp)vnKyqhKeKA!+U4bGrOPR|EpVRC2^CI@_0Ylhad3fXw zpz9{A&97IVwn^&kNs}Mw zhQOTyu!KTbBVmHZg;yd0erHIq0M^X@s1odsaJhPB4IQd4<03?-#_>#RZqg>lZ7Fhd zPy8uZ-s=1de;YQmQy>HV4AU`?n}HU8*%37+c5OjNWEB1b%H58NNuD*+#hUV$*N=WqzN+p~dz^uDuzy<7p(7BG@RZcl}VgRJN z1SUjN^-#EK;zt>b1&*&owoQZrE5aZl3wr5HbXu>ufgS zfNo1U#LfkFRP@HWS5e_;eNh7xv$!<#fAn+1P zE=&S1^ifpJtd>hCH*o1q1i9$Y(Tul+U*=f%{sP0;FVQXAlt!nr1T}$wy9{XN6q^hC zmLKAZ|2nk})Z@Yp_VRh*yzJMhYC!>nhnE4v$$&QZ3OKDtDn?*his}_*V|es7e(N$k z^I-Xwz}NGD@4&BfH@D%zIOE6YO@1tTvhSf9t=ic#v1fW!0T+8FcL1cbXEyfhR4afC zWM^JZsIN8ua1CuHR|_zI#pFqa08C3cw%wjJ&wW-xJYfXtM%nw-zW1%zdE_*GCK*CX z!e?5_vB)-4wfyADC=86}?ULDP&YM|nA?MI@opgQPN_txR{7GMcHpY0$E}Ee^Wk!9F zoaoMU!lX2JrlqKCiaJJ{x~^lg`kGl)ZZNrI5UrP0*tI81sm$V};@~@A< zk<-?dN#veY(z)n%OteVKTxVL!C5N&cnNd_w zekn_@D$~P?3@b-~-RgTRx^^kms+>zOXCg8|yiUty#AN%S{;!yGff+1Y;Ljdp0(_me z%q74JuCnDoGwMu#H1=d=bpc*V>7zmPL98BPUxGK5|9R9>qDwkzSOeJN@ zGcDyd_kF>2tZV=D2oR2avf)Zt z4G&b1&JBBOiGSCxzi)lSf!aPgXA#`hvpI?4%AS|M6yD_(F>Y9*Fyw7yT4x)}Qmfl* zrdB_dflTFpAIg9 zGB+>rzble#s72)z<>p)Ed%N_lw=f3o-r_F3=_~kD9lgaVJhiUg;#P)=Pgn+hukJC9 zv+B5Ja3pgQ&fONi z8j{<7lw@-=ae}*=TOY+jHT>+y(TLtP-H~`m#wuH71cgnPDkDnT*|r*|laj=FFu*Z( z-rhL9r!d9WJAETV)om%q81-7c)0seBr}Ob?&IRxiFYUCvOjh(yZewoc*2|dM-0q6q-Y;K0z4*J>8BLND3tE8bMTwvKx45}f4lsux zV`}+BgXmVqA$FP-ev(XNZ?|%1ZtTsT!9wlSK*gx2ZZy;0(I?@et>gYH6hy~OS|vmk$0@W>ol|$xNNA~^H}y^J zDfxNV!kLp=L zs!}_y?8vK26t=U#e^#_kqdR1r+T^Puqv9E6S$-78=;Ri)XVR}w2nygS&S;7uK;V6_nx}0l_f7(mubmw#+vQ<^h~UIdA$^p3>R;Jg_B8$~RmjFD=QN_#0Z}S+R`$Jr9zSAN*zDy1bl^(7oReE_UMJwz{CcB00k@_2 z>IB@@b@aj9gZ|zdbiE&~=kd|2@zNNB>qv7-rn|jqQG(0f*WtZb4p8K7-xb&!n^bUrDp0UM zg+%jTGLC-m64~3?H905-(h{vT6aN>vv#R5}15VdT>#FMdp7rt0{7ILu{&x1_@@eK! zdU|>F=Ed1RE}ni;zDKTW;Zy=qEot1=bzD7MupTuKMFo+pOq(LouD!fs#TLE_ z317u^ee4AjYhy9z!$@ZibFJwjT{Q7)W6(^4D3co7SO~XyEly)0tU-vyArW&MW1AL1F6CgdS4cG( zD^885{E`O}P^U!@103Yq4323LRG3^0fm)_TxK^`mVOoSsy#`m4{!L1M)V4T-VEfY| zTv+Imy5^GGi*I0r(=>wuDOT4tZ*fuq6D^YF4=^p|;t(l&vlSJTU&`v5%k;oIIbt1s z*U-gM8@ybNTQqlyHPGdx|6=@WX?c^Ij%6>#AZp3K{U!?L#mepBLo0Wu3>7Y|nLK%6 z)l?0lWF?JN;L+8{0~5G^r)sR%;)}oNlQcTPqK9v>=<|u|C~o}8rfSUYwwkR`xav&6 zt>f>o0*P022BW&LJlFM!Yu2IyjlI_L2~|Jl8UjL5f45PZHamQk^VC4s&YIO}7qH~- zqc*Jt2ScnG+^{yyVWr>o*pD(`wsRSKF;>5x2maMGOuaA7H*YV0o?ZU^)7jIfZ!fN{ zR=`T`No0eyFx-X-=<~A|FFrkcd-0#|E?%AgW0j^t^(t)@&lfMxE?+QV*`>119nx24 zFE3W)mXa%eZGdKTkGQ~ndwIT!0*J}&F4cGLfWG$B%vfV$M> z*#Iq+=OJ`Y^*rZ)s~=zg^a+`O_S06gugCN%!i~g@8)6*f%}mgoM?oN!9Iu?SgynZc znkSXtEx_@kmkh6DWn(HA7`9Lp?Iin2V_BRBUO5)qI&k#@3}da-aUsH?IC=&|B_+VE zI3kZ8-?Y5WMYCMHxOvO<>7;VH)dlJ^R`Cx0Cg0w zTvyb}!dKZ~%b`2>g5Vh%wleHanM^HG3EXPXE=C?3XCn=KAvA07Misqv-5|2cflBMC z0xm+TH&I)EBTbLlyorPxu9zBI45N_k_||6s8l==4G_Sn@lVU}h5yP}`iZWf@Wy57P zT2~5z-cemu-;*h@jYN$RRWk{a6vHD~v3*GIpWz58DO^<9Kf`4;3X3iE&nWnhx79s^ zGzx}i|KwpW&fPO`(dxQ$7clE{aJ$ZkS*v%3>0)7jy>0fE78RW-+_tw#XNtA@YGe&6 zniYF6qLrA9N1j_#g#9ApU}}n4BJTVkz^XiKmT?#Ru={YTW4u z%2}>|$pe2|1)4*I$~C)e0W=lK(Kio&V+74LcVPiE6UE?x?Aq;&(SdKMe;9FqY^!BRSKOOd>iF|pE*fga_JvIp}Tl`dA+pr5^8f!jh9?D z;h4-;wTV}+uhm8_3flTvDgx=DvKC4`0~VVWAV4BhAjWZY3kqqk$+jtSO(3N!*1I<^ zbkI{D&unYgLqEye{RFY}dQ)xACRQt!Z+9EkjJPaCt~Iyx%JLb5GR}2^mM&Q#!3Rfw zR7}ZJlgeP=Mb@|YsZ6@DKTbiLmX;T}D5XBH6M481o9BsMkC!)AG0j@brm()MeN(t! zGB6FNVj^L(wUEPWBaPgm&)8^TFWA|J3Atnog3Dn>uDmlmyWlR{De#+p`Xys)phX_6 zgggwpRjH(MvA5 z6a}*hT1T**J9BJB;5q{BT${48>l$@sXVrR90O$HOkN9=mz8Bg9@h zxMs6ImvtS3#^1i#AGvhU!u3X+&HhL=g&83Ct=Zp`byW4aW`B79nV8d)b@;adM=J02 zigYtaa5kD2;C2w}bfLzE9sU}BJqM|?c@ABJs5wC2uH9hkaGlcd``2%D^wMvGkPZR>E|h8{&umBHRsUBxd7@9Y$}xNkRY*tW8c7$A0N zB*U-{?_Wj=x$G=8XymlMT8HbX_8F73z`Pv}zK&R7Ws0QMjMVMe>tP9h+hKCcwd{4S zzso!CG`^A@k2T5|Qt4~)a(-7lg{Gfed84e+W$_qy%bk}r%Ncr!?a>wL&0~7yB&mp& zdW)Cj9;`Ht$iTAn`g2{>rGctGwImZ1mJ67l;R>X*$nd#0Tb+!tyv!B8T?k1BLskQ0+OsBP|#sgcLM2kKMvoJ#^>=}~5 zc{*kQjXvqGv-vrN+5+=P@s_e34_Qp?8NQ$)G$7ez_3{}%uCS4rK3AGVi!@wPsoy5` z$RxKJ70066SlmWTSrl%AsL8V|@yAON8K-3%<2#C1-WA;&4yJT}TFc7OE6W{J;7v=R zUU9&X?WCHfRo%{RGm0+&fRa$1y}MGArM49z)%4~&0c9@V3I4unC-6+gPSm^Avi4!4 zP2P!%?@Cp%W?RvJtk{csX!&N$+kCrm@nESU?`${vj}^O74=vw~d7E!HE)@o*)<4@% z_UDQnna7szDSv=}Z&y~Sx2z3Aw!OJN3!*#wd*vnzpRL$w`Kd});n2yUMXHa^c6lXD ztmfJqm_Us=Pk3SFKJl65`_u389ivrRuPWLp^?bZc1qp{wyV^ zBES_CReo%x^dWD`sSyX)qV+XUYT2u~SFwnKC1~`&g8Hz3UzEW6B^kC~k^%d39CW{U z1NWKq2YU@Ul`M9q`4s{a4`wE$dOb{%(a$_x?DJD%?*n$WWz&>)WAAAq-C!dUYQQ7XNN3i(UgNb z{=&SF!bWti=Bm#8)X>;kGf1R!=<%=jWXicNP-H zCXhF>Nj#nVaJVAD`D`(y!cx z<2V)OVh&w2o+6t_(sqxdTPBwIvH@3g2e}ptM?(9WhohejGn~@ zl9fNNl0*i!QeKe(u&8UXWg6KFdaDtCr;>sUP{=!1qKtUq+V(=T-RIdt_o6JXTdYMKHBzj+BJl^ zJY6{y87MElAyv9J9C``Rpj-_LB~ zeWkkX3%6TNoeE{IoUPPInCytQy&l%OG}DUqlGSP_mZq}X$nWK9Snkkbv*_CPTGo|{ z;acsI$S_%XaV?}_FG<}hX;=VfK$yR|GKDmGkI|ZAC*|y@=7W(Tqpyy z8TFC#c%4Afs_@C+@l=?)F=tYRDc4#~e=grS&Ve>l?u1^Ed_{NKwVg^rXFQ`&ZNumk zZ<7l-IZ2?#V$L?Xm~%OY0CX2PgeqEMQ&s4Np9J1eZP_~#hKttAMi}+=LT{66G%dVA zyD$o|AwKrtRA8C2hjFojjWb%+Ce>E5(?N|RuAK@XtqelZ!Hh$gNRs|oYAkQ-` zaSE?oam}0S(I(fbu~I~hnx#|uf0>nA7}p>VooTP2&XEwj*+O=%H7K4RS~GXKO}z+VB20LR~toHIrg?G%Bev^e>JBn#={DH zs@z&)rSF{@4!2jEIRpW%jA|>9dwUJpDo|I&Zpf=Ub#UNXbged{kvG zOrubh=2VvcFk4BzZQJYCYNIJDL*F({x#-<&xu9g%tU-m8YQ`_|Ef0hbVru@`4dBmlKAE^|yB{~0mHoem%%bfG1g|1sW>W}i+ zi+@*Dt3P_lFyDZNen&%px}syFBbL8~=eWiRmu;sJmwdd4T#sh%cb2Q>g<=wp)Z(b; zAjKj>OcosGIEYzvM&1Nbr^3a*R zpqu|ybJHVo!}GRN6-PntlEO9OIf}Jo$A501y{jC*+O1ZvwRa- z^qFTHN9&jSQTC%tgO+bb83sK5&?9?6AlFVxUhAqYZ6#)M;yOVyE6 z*&%cPy(6c3f5L6|;5%|EGsK^I`tTju>kP@_bB(@tM2UE0uM#Bi;tVFNd3d199NDn7 zu6!^sDS3-PRSRB6sO%+%bf}aFRc!$)WvMGv>zE=1sEkZRxK@crSIAs#lR3yxz#&+b zg3cADwS%&Az@exT{X9qE!F&-flk9RDs#yY)z0>27f73`zrf!c%2WYI#$^)y&{prT$S} z&19f>*0VAg>w5kOBV$>kM?`ybf;|K>?HPHAA4}6sfC(K|ezHY$Sb0VjI%aslEJCJT zTbalfcWvb%l|)dw2zUiB7SxSmsk`1cFY&)jf7q~UeD2VxLz+{XnIN?4e{={nBgqEb zGQnh5|6GB}xLZ?ZVeq6mKQNjLU^+jx0z6VPkze9}|9|%0wyTXKNgMtv+3fB)!VNOQ zHrU<|+Zf|+W^C-+;C`8*Z=XUcpw^N~PnBew-s%7TVVhFfEA70lMLlAGf@kxYvNn7RP|R2$hr#EcjA zp0EyLn|SeU9YTiXx@?Gw_^W(K4q@>=e-xOD=6u@lQiVAz;3*JQ{_pEVn%#xN?D*}Q zH%DhLKmPLe{mbIk>T=7jr^_uai+R%~Gt6w!WPpl-_aD^PVuajLV*-qq!|s{B=i>D2<;kz2H(AKeU&SI4voufUDp**>1K+5~mZE3Nhi=l( zaW;f@0e2FuzHMvKr<#>0VaDJSSbsYE|M2mey(o)#tyA`ICLNtj5bkrH7P)G*UZ*Mb`6 zTf9B)HMa>{5JhE)vhADtBmhn?zLCRe|R2CAm+cQM?4`O z#4gZ%JqCrN6S4e5Tq_Y~ zWN9*dOJQup--|m_!)s+Rat&Ftiw3p#*HL#NoM85r&24UVVZb)n&29v^_BLJpaJ7tA zFiZ{7H9{rML;C{kp>1tX998B9i(`erN^e=`*$^Rl=h)TW{{aBKsz z>HA`soh4xSFVj3q2bZ3?`s!b&*(93xd^cb_t|I6!>pQTiN0$5IQ1JmW?(WET% zSr_JI37vJD5i$^w(arp3j0{9r&8&9}B?B>Nm2P=6Z4sCtrNb=(lcRXM+JKpXh>0$9 zYp5B@zE-|-e3xvR5$H3fq7EAU9H^k==D+gtRQ5lER_%y0}VM{ z-mdtZV3$uh3EDkSTg3tN)pek6hqA`7U2E=f`NuzmbBqo4PCXRvoIVkAnMp81OxI=- zO!(5_#)64mHf1Kk>@FcQiICP!ghLnYP4l{mz?!>1f0jwE%k6J+U02e831Ty^#u~&k zn|tnTX(oVl6|w|~NOC2Dp=kv!>4F#7O%V({^78cf=)!tnj$XgEF5h#eLbjyp5j+D$ssuq! zf+YaCe}|$Fpfn9FlGdrP1c0F6Z3K{-4NCwCXP%N!;xl3?xJUxK!=zXWW|A;(lNU#pI>g;%*kNa~2?_@KVr`>$Q=SYA3Q6{%kf1UXpwd;BAxRO2OQyK%9D+ zG*`2;@p-MbHcWj|YgssiGC@g|%P10}($V|Lam5M`Q1c*rwxKLnY*$DM4Y`Hh9KHW* ze-Tr(mglM#uv~%f(CMv|B}dYeOl^|RI(h_~XVp?%9iWEuEYenawaDcLr@7(>%Q3#) z`jSkBIGhaIu}2EjVV-FUr;}mlf^zK8;>%4abIp-?DwJNwW%z1+6OG4yOO(_aE2>U&s1#S?zIe@A=^xfv)k@)HZ2|;e>s^M zi;L{F+N_R&^J#tfnCjKTnX}yQe1HME5g6-?$%CHf3mTQy2%9rGASDifqZ1}jA84%Y%FNM?sk9g~mpE;I-m85jy@--c~kQd%)^-?$@|`^i4+&QKt`m=gR+KJPH;e@Hmrw_7U` z&hp*h;SNsbMI7!LXBtz$HM$~boNP=97p4U}IWJ_sF$GJb8v&+G17`qt9IM?(a5qal zrod_>m}_#69j7VZu?kN2C9K+D?lA=n*{#I6Z0{q*ppomxy{yrz#QmU1KXzA3IQN)> zxse1e(vMr_AG^6)l;mTifBgsN=VF}x0LVUfR=APe~Yp_&K@3(Mpi?- z(;slBTvv)6`!cN!qWTKchpO1~-V@wpVd{nRv;^v+N=v?+<#IaZnkTdfh=29={hOnU z`c3p`ckgg_fGmZLsRSOzY$mLKJWkHSapq;jR`xZ;COS$CvT2UUo#=aR4Q+d^z7)(2@_CIWAZNtb>F~* z7*wEaL;LQhw`W{q3nz!OLA^NokqanB*YJpUILR9xlNHs%d0fx5pxS@5J2*tPPtY%` z_ValbN0a`!{>Fs_qcxZY9TfUC3(-dcurhC$>N`->O)8QQ#MvAnqhjt>3?_jJa)|914We-I{Gzms` zViAGjxA{b30(P;`2;#bRL31o7$`QeX={B9R%^>9j06>~YH~ov~hDo!)S<{_p7C4Q$ z(v&9)gxDHJe+-KULhFEBB-7bqE~4yap^~^w!S~@ZDMWe9R{Bh&`aYKlCn%ZMaMtE2 z5L?5@*b)y!)k`4~l}>I3$$VmBZ&%OR_}f}fr$T(#vNUct?gWf!t8YuW7Ac$o479jf zs49czCixssi`*LHZ9F%~!uOquN-YmxRWD?C3 zz~#^8e|FN3Y9E_l4~p}@#nVse?ZEG_FEC!DpW5oIAqtkF4Gty*b$l z7$(>O1$9H6X<0?@dAaVAC2;LQTfVb?%TQ0SK2}g?PVxtoYpY79zf>f^&(U}h zyK}Owla0bTMOcbu>|sdvAezKts=n0qKo!~Y_CPMAU=IdQ^-U`_4-+BO z?ijhVQ*7IvVwvxh*9O-J!g=kTj3AuOUbEkwAj_3OYtzBFHY}XQ4gm5Rv3R!-oO0fY z6Bf<}r#oQ@gNgUDiTBonsWOz*v3RQNg@V_}+R7#-Jdsbu>R?v*Y2VIFB;TLnvlirq zk5)T#nRz1?5}5Ue>p2KGl6XzyfD}uAQP?#v1hALKsgpS z%K!OVe)nY^>OSvdnHicO$>N*%YhSB@K%75*NHF@g2FSZ;K94hh#2p?8Mo;pzM2gal zYYSk>^^hOShuPKyDkzsRe`r&V*i$63#zA2fWXIA-%b2k>4i2kg@Zb~K1~asl@xd!-U)iBGjtQ=9qmY@}mIRVWdtGvH4~@x;jHCzomJkx9+pj+t_pEL^@`n!ikwy3ieWhZ_^Sk57yLyDvg&eH!Cuf zn+6Ymp}^E2_C8@%{6dY#sUD7N#dPEhPp$*un1G@01thS7e^E~-1DM&lQsl!TomS%7 zdBDM;xBoN|_oz@@R+RupwHl?R?sTbvv9pCBVZSqVxN&bkX?U3a0Dk*XlbK$3G5_5j( z%blf;Wyj9J))r@W1%s-;{GZF{oZLRK+-F=T8dM}JQ&SXukbg;}gb_VwNZ3>^98cPb zl0Zdye-?cnO1s?6fpP0`Kj(1;!J(iYYXb~sG)L>+w(-995Q~x+0@y0DlQco3$WA>$ z&b<|ShE(nqa)!{6oxlt^(3(xrV0RyR?a?kElr|z18LOwLbnn^4Ho`}Yu1``4T<6n- zk-1DeiIR@3r^&t1?_`!J!nZO@E;bK;DiKhte?S$|Y@ov|m$TvAEO#*(s5s1;$#9@` zyoJ>OvIakD;Oc6CV*_k2-8ryb(Yu$7+7Zlsnm;qnuW&i~cMVeO4fEBdB zToCZIy{;rQMX^!!T)4h0%3L620$k1pHx~{xwz+^y+K{e}2iT?>l`PYf;ub(aP0A+9 zf811N$H7QfEM3;WVQLc;pkVw|c|Vl`rO>lSh?;`S+jx;xH&zK_quHb21;sIlm#IOD z?K+CDqs4g6CGMy`0>`hF^)9zAZj;i@@G#Pjxu|kqVLe)_D=Q|C7F@Wd$%RTy>H^pO z2wa4w+xro?Yz!&;iq>A+xH&>o80)oZf46+uS8gQ;iJ=e*>gQc0=^7Q%EAHGWI-U{m=iEMel!T!G6I2+BTmSmYVfhHgt33=Je0MF<&&Pgq0Whc7EuC6iZT^~<& z_dBRT#+As6zUlg>NW7yI>EtPPg00QDvBizDh64v$LTe~nmQXgMw01?fe{u!^D$0uW zpQH$_VMK80@Cqoty5bq7M|taKv@RV+7$T0GC0dL0oTWDPGfLCM)B}84Q@Ml&xUsOA zSI?9dL)+DqM5u2sr3Y13%)n<76(~*s=loHg$xYYMfN271bZl`Sp|WBeX4NEDZzN!C zJ?U~4z7!dnszq@GxHmc)e}vHHTph)(gOkbDLs10OTxOOQKu-e?!5XxxHWrxOKSeyw z&XzWNdyNZJ6;S3nIX#NpM48J>6XGwWiecwB>V*tyYIRe<<%N0oBO)wHA{9 zFV|Q1uCEo_;9G4K=Y7RJo@DV^Iz5xkF{##$m@+%{$x%FI^eW@_ZiOp(fpUS;9CZ0o zg{jCZ#k)p_tS{Y|MwvqYMn|gdUzu)M@mJX`;J!aS-sB~AbENvBm}v=+*hA@1FOGiX z0=hY^L*WKp>6_zpe>{$dLH{=a20_U{FzV~aci`Gv!%>tx-~!Qzg!w$42QDM9oNXvy z9aC2uvvPKPrG@gQ@$$d2y4{G-^v|Z^&C56+X31=xvYF5=Nt-vteF+NPPVeBbbdHVr zn+>9Qbko0xZkVJ4inx<$S+a(K6sq(h#EWIKIi7Koor^>rEh< z#nZ|OcOEx=4~Xag)OQ)KLk)G2hIOmqi9Y2Es?fFk*uX|m1je@}YcJeAXVJP|NoD7Jp4=jAE;T&=kr=m|EW5Y#Euo`8P89Vb$mD}EY9 zCd%ZCrWonvJ1teXPS=tzZcuAW%`=(pFneeKD{!Yj^||tikeb|*uU$QJ0%}{?im-H= z+-LjaKZ+HFh!1E*?1{L;MMQxt(Q?flC1|z4i3z#re_&XfUX2GMF1QC3rUT`PYrsNi z5-6o!d05@vchD9?KHOf>ur4b_RhTv5>UwBEMn+GCn*j3 zPd>UKf7)_w<1?a-6ioc-J!C0`Sut2m4P$2;lnWUL)d4n{9aIOw6CpI0{XCv)tyvem z80en-RCbIj{Tikq^>(aQ2oqbT2>#&AOPPnA`N31YOp(3-5+kX1&Z9}ZKIiJgaK}P( zPV5qe(X?LW(%PgroI1M`B?5VyPKbb_ycx}ebr-;7s&NzvJm1)LNe5%+Px0Yc?b570QsGDH1BY!}guI(MrxSar~j#$!EhdC$3Akc;-ZShUcB zdH!6k81+X(^h8)5WfXrc&sh;gP3!LU@4zjS2aK zu(P)pA5UJMUYxM8M8Z6`-TJ~{uG(%Ee@v6SKecd-U;jJj=7r5E4wKW8OK=#7JD^hF zx+{lyX*cQ>hnZ?=>5%TIshb7rpb-%_x%3FB7c5ID_GH1dl~E+KOif`WD_g)9id|OE z-ZJ3JhIy?5f5kK1Xgu2_c@xEzqzoIqoRj=SZA?bHcd*y608g>t z`msU8mCLh7F~pg);b4zqO^3FO+5gi4%TXP{fp?}UmTyTQ8P_)Kaa93y5ka|n-di+xjC1K zjLxRK2eyFwOId83qgu{Xj3)81)zyEE?^K~?b=xq~5my1<>;OsPgJKC_(mxon%E!!z zBj>~?4LWO?mqiq160)&~e_{k?DQR#`vDPIGIu9~4h_;PI?|{#fZ=DkOHyM%!ok?QC zPax+k^M|f)sBYLp@${SDV$L9%%abp!m{?83oyU!Hhf)sl7MA=vnZ%WkR3xjp(p>o!DJ{u=<<$aQ`{QGbnB=jn8>sQ4$1+xoyW0W606c=w_ zzI`rE3;RiH4Sg`tnlF!|YBOwP@a)%>@FEY);S4KmJFEovDsFn8_6GVJ%=`K8L#Jbe&uuiBV0zgl@o2V84J#CW0YIXx5G#0&0{f13@`pmmddCtl(Q zyn)1a2~vOM6RfPM_HIEUXoBE(d~mG`3Sr^lb%g8tVk#>{#ERDkE>_2nP+kk6>Ow?x zH07av1AMiGe_HtngG0zzS*Vp`vBg}Y3JbMzMPjC!YZ{4a#J-x6@3f*h4WcUhY_b0I z^7K;KcUsY?`X`#HWt!UHY89^ynzrb302U23b^X1GvQM4*{pt#+w{!jNJ==YR3>^no zMI9=hCc!09*W^YVfCTWM#n2plZLO5I7bo?le(a8Tf7Zf>*zFX9MnPzlT6-=D06}Ab z1hC?~bR-26M9?H?0I`kpk^mPpAV_eH|569=59cF^qJM0De(4Jdr0oURw^);&xY3&D zum`f+Z3_Dk>)P~trzp*mGyuil>g>X>vz3CFB=-IO2}-jh(Oq)6u30X1{#NHfgtL_b zo}>iAf9_98(;Iqr@)@T`#&jANeW=YzDSBe3~C5}KbW>V?2hy` zZMVET#Vqbf3TToJDGs$QN(;~wKJ1PR!E+%7D+?%7J?J06!X+shrZ!1hrtDnd zpY(LE+3?dfl3--C$D*VwBl|+%L!dd>k&t0uCkC?PqIMKP!I0xD7dEJ5J>@v8xk&i2 zSR1J)^}=0IurGtg`l@Cb7|Ne6RzZ`p9>`k@Y|LyU&81#VE-ol8&L(9)+!yWY!kKUC zf4v2Eq#LO%pG%)Inq-~B)i6noG;I{gE+7Si)3RJ*jczm?A@)sk2<+q2ZCb{$<6EM0 z2sqW6^~pQ$mutH*G1avt3c$D2h$sMAxEntajY?Jj6y>*}a@BYU1Qr2&wQPLznA9bn zmKvw~cU>#HaY5<=n3)o-Xq7xtueGZn{xF9zz!iNokh zq{|_U*mZ{ywqa!)qJ>@*@3!eC)6-O_dA>R1uX>c?VeYt#~&A{LUi#{G37 z4@!k=xq3uDJ$rfbYvDP%+_G*(bB7gaDqGF3x|rt4&D3zg#y3*$Uv35RiLobkRPsJk zQ&^f8zTHe9W+{^sOTqmjl3Q6%e@H<@yu9nRpSm}w$-FOK$I(b%r%hF^zf|1n&6nF` z9_R9yEC0A9_T{l`QJMa>bC!9)D`oI4!#?OHbTauY9%>}km7XX$`8gUVBcbji>Nmi4 zeOE~KEuI*FOK74K_{&nnNCxL(!3vbpLhYD87{vupxl6Mv@6^31DPhKNf6fq=CWYih z7r$7Y?D|Q5mQMdBm)i%s+D^@4>$#l>5z^r0A?%iJLP!H@6|TZXu#>t8y$fNJP|Cg8 z8x6CXuCsLV)~>IfoxkEfZeE#4t~H0%GF*eRIpg~=jp8Mon2K$eSl4r@zN2zDmcE#) z))7z##Xm#ooLHd5I-L*De?~%3XA^;fvfBfcsaa4S`^Lv_FqA^>?Bp(O2Ckt3<+2BJ zD9sexF5VlmZXf7t=+%9*v;3RpnPO3cqT0&>RleN7WyoRCfU?+&rfjI3IXC$VSjapf z!UIKju(EYYY7+vND|+4;r$f1}g0i*OVi7B9W} zGgFb|C-m~nPTa-X404SJO~!ML1zyB6HHfvF1AYW);bBvw@HJ^_4UuRPuNflhv(T9w z3z5K~%VvTQA>zF;ObxQp-j>Y{GnHYpgIJiEiRBhQJ_kgW+rre4{THh;>COW0*#B@q zVY;mv846zLz=s{Tf98G=J$8k8A%8}CKd`{a-VcRmX;`S)bZ~||9Z&Fio@|~DjhAFn zs3rDncOU7KIbd^k5Jsngv!fs*EzK9#Dq`_x5ZY_&&%if@E-D{19ncxXcn5Qx=`d5* z$W_}x-z|rX2Q)~uU}ZNR&=B!;CYc%}lzk)^55;71TMuxlfA=QV1A2h4qOxo~=!I*{ z2mNEuUF97c5OBSAoB?6*1w<@*?C6~0#eOp5XH5tV3TH#0p;3yjYa2o%DvSs-r!H1L zGXhma9c4xs$Q{}dq$2E0b_A)cx?@KGQ^vHG(1p{vMxcF!GrB1@Cj`31_D%>J61Eo4 zV8b)H%n7(6fBH9NPQVq@J2WTYg6FNxiPem98x-g&>1+lCs!sa4L17oKF)8euUU|WH zU01n3|!^%8Y9C1 zWRkUmz2?pfGlJH_(5QIri@_e*d!Zo}=7pJ77c8G?F+imvqHGI;xkJlhfJ#qfHZ2CY zdd2Iue+4jWT)&EH(JIZD}` z!MIN}eo!0-@N>t0qQQa^+YgqjX;2^s#))8-ROcQY42taloPX%=Kqw#--8LwNeQlQw zmeSHUhD+(A9<+g)#*3mm1xk7EfUa9KWyGQQe>pTXQeru5;*`hSnmQ%8$dFPrXi#H> zKx^Blgtf4N$}0rw6(Zsk4W6umg2qv~Q%%B8(ctMi%x5W3Tc>NFve|@~Xtt3eD|NlHFH>Pg!L1 zf7PJV56h;HT)D>Jkw5fS3%qMD4KZ=CWYZ{kT<2DFPU5-&qeiYMSRdUm`)5$OizORH z!YM2h`J)^2DBm)AXW&%FCf*r^xJ%y*oE+J)Zw5|u4Etu(_H*WoYaPMqj2-%A;6%o5 z{4#I?VwXf21332(!<4aN?K6cUj4-h^e5 zp@gb1Q6~)GWJSLkGo#_{HbF+AvlrRAOd**L9DuPV3Y?8t(`G=EQJV$@vZraq=5`wo zKjp9RF*m8RoZj#s5%N2$6H6PN!0&T;gOl2T~d9UlNtfCm7mSBpaB zXlzXj3KXhNZVfgpR2`s|p4^A?;jOLxv9fGuG2;p%Yl!k7>A%W0N@R)ee=`k;jl=1X zp2pc4rbuzFHmTy3&nAJB7dx{_Py||}Y%Hfm%+dp{-#oCw*iNusB?bBhGdm)wX& z0%u4zw@6%8EM9{IPMF-FK?0{mHZVx^7_r(Ta2n+O*duUy-v!@bu)B|R5fUngtZD`o6WV{L z{WI?GKk1C3*ktmDFXQf1|5${5r|~-r8qq zs=3B>KuT4Oeq1Eya+j+z5KK#iRO!xB6+}H04d)|?qJNw&YdMycsU{H5No;z$>YZ$?6k5{VvLUtVui=NkCQPLm~N`ovJ zunI-@r<{psE~4?5=q?xW=V-i;pQ@w2Iz9xh`k&$}dSP$+m%z;Rve|$3D*D~~lb5H* zM;9j_&wqOR%g3YFuRp#!d4K-)?7X<1UQBffq21!{+IIpXf9~D3Nz3@LLKSTa_}FL~ z5m&g$IA7k!v$2jMU8o97vn;;Oh14&R_>#1ED!Pg`5FEi(v=#}mRqt&% zA+-ostJAyce+WQ0!lP&{VrAy~8oP0qpnsha@U#+vq^4MM0B9|eL?E=zl+M{d6hD4A zRT4lSSeTX`A^4wZ>7hgUozt0Gbk1A0Wrqs#XKHHW;tgLP=z$8(+u)kpxVS?{-4{yM zU2LUwxcZrG4Q@{Kp+o7})*wD4J|Oz+30mDBeG%U-ImYWld z=x}znWr>ePcaFuSRp>n!JJaGn8WRw2Tu7n=(ScREJRCcpxue3hNKtX?Jia(ed7Y9n zb%%haJ)yaUZcS)cjz7!4Cfjxsfc6`+2Bp*(j;PYk7I&T{gVn>D!>kuX;dD{+yl zbe3c!|Cg$f9xao`%yWN=_-m5Sm$lJdx#P`P#&?IMs1B_~ti&xsly0NkxQKh^n;jf~ zx+nops~a0yQ&>S7Uad&6h%b2aK)j5{@jT9*e_VNcLB<3HpBk?(k?dBPEb_V822FMW z78~9;4ebJKi&$Gz>(r5+n({7~N12r0!CipGgAt@WG882?X-l9h*yt@GyWB`CV8Lw8o ze;W7DQ{59QCKV-z{xmjC!G$Z^j_v&Tlh+UMGeRhuP=U4)9fB`eQ_^os<1f7iM{l+B z6`N0CGU`}&9nNn0r3(bvKiFLl@usiubVFFE=z=!I$rDnMJHozo$2BA;2G~F|j7Vo1 z3{WE11+@hP#{Od^qT1D|@ii?M`I{*Fe*}mPxpZyFnm@yY0uL0{0eJ0gOd?27%=Ie|y{aWPrdUF8HD7Bi}T4(3K6gCpT0Id!0!1`3qnV5DPse-R=X z;o>*7?N%;n6nUn&m8&<+?uxj((v~AGY65V$2#yap%eJE+1O>DQVJJZh+b$@re{0*V zMD8lroMM{%$;>MD%twR>N_7w-Q-h$K?tXj0MQePk^utWWQ=9EIN^)re-^C*_Rx>kC zMSh!pLG3)QH4Mt{&@L;1bFIjDGMnFVK?9}q2DTSXQfqy-(3ASIm`=6Ndewb5Tx~kG zZH5=_JPp=V#OZ#Y)zrno>ao>Ee{+{E(?YE&hSU8@t*LNB(FDsS>#78<qw; zq3dKkk7bjEsiifSKhPha^o1{QQ_eX9!u{oRzOqow=UOQH59fq{epIy^e;zL$zIsi7 zl#-BefiFT+wrI@i@U9hU<=CgL?tmiQ%hVFDbC1#$0{L}8^Q`C;-=#X^rbPC<22v3{ zPvygGVDT*2T)8#4^sBO^1MDnc>dkVz*tQ=kO{+d@+`s>jS>tkDIjT%0h8CJvCoJtM zM?-^@@i);lx{0%IG;>_Je=u=#)HYoa-x48n+;WtxlDFSp{dYW^=lwF3syBxjzqbhK z+L8pSZO*+R@%o3B%J4yH_WSMUu;U8oCtf3jFH#f=j zrvF-gk25b4JRv~ad_{aq^b~M_f#B7ztKCtb=-*uq_@+n^P_|4xf2MgBP4nwCn?!o~ z7Fyg7P>bSy?4VI(F(~UgqHRD~IbmROljX;;vI|2Ijo5-Ucn2asnFMxH@lL|~Ws{(A zrt$DepjnQ-K|YDLCs=|hh&jLp_#_Ceq0X*4{zMM3d~1%b$#i!TPqar{^DEdh>{>*= zmuP~35_K%~2Xhlzf5XUSOEfW*?d8HfiwLosW)IO9x*oGEQ!NPLicatxp|~lI#}uc1tZdt@*9=Y&NPSUa!hux%qZ2QN7VOU znIm|9Fsy&E3<@AL;NmktR|P2na%~~NgK=GQczCfAL@=Bae_!jrFC&ILprvvpBfz)M zq-jwZ_DqL+tS6F9e^9FBolcW^5{;8TbWy*O%v@$-82@JEZo}zlweEfTM6Ub&$4Jy1 zomVIY;x zGwQZ4g;3nPf81Jb09__BS>=mrgXy`r+!EiH*8cbEqhbSC1|avk|Q+tTN=@9K`CjAsR>jb|B!Q6{yu^GH^aVJO(ti1k-Xu5lb*N zg_ViS%MDE+VV9eax{+(C;VCA7rPl9=P!dfx!L{}_C+g755!`E!DC#H_j%;hOMP2R= zC?)Z{6Y{m%6O}>h0vOhoWZE7mG6|-pup*Lqe|w+^Bb@EwC6wga4`^zMI@#PM-6fiZ zf@=}Bq9vm>g_V`uix4aSDl(cxE6KGu(c}(*ut=;nc>+Ap4uT1N+RXh=`DXf+Zs}j=n0!+U_QYAs|S2j(8rd|^37rTzf zf31VNT$tITyIUHVkfW1Z8kkw5`;`eZYlMAnKIYrtg&{KZAEwms8{GWielX7lbNrtYS=J{ zb~0fgYFIEjVHB=mwdh_5*RWay>;n&ve=XOBsG+l{S%+miV3K|=zy;ZLiEFUEKboYQ zYgjBgu>Sxp;pEQk^XD|vkzl{6qN^B^g0!HJMQy42u~C9-3|$&o$;?$&L{+giVgX~eAq zIBC+$bh~~yK~PkX$wdH@vnwjmz6;5I@d1ZAuTf1!F^rc)hoFc*2q=2%z6a3 z`%(bNR(g6A`7pv+kO+*9pJL`u>8BzBr8@#qD2)RR02I&x0Bntek~q+~od-qY#x@I} z!1dr@8vqLRC0CnRw<*hoYH@fhgr(*&JsJ+Bk(y@zO0)PzZafdv3c`|Je+^LCr%Vnd zbeZS?l_oxocYx0g#SyS-63tafm!g=l!7NPdEmo1Ypo9IH)+#X4EMy9nUn-b*u9WIo$(ja=9K(j$$ znHiu{K0~*bSdoUx?&NCgf4+R==n~Ve2cac@EZ^#E5zmdGv!!{b(bcK-L9DzoxQ(9P4z z+*pC{xP!x$hk{-iG*)6sn??>|5+GtBo0U0aoy2O~RzvAaWuqdaf0epn;`$iCDWqMN zt$`CpH@1D?{L#?%X;fK=Z5zRfsFZEgLBXQ|oTlnU1rh4>hvPWP_%;%psp^HL-RbUy znVM(uyran^mMQZMT{If?6xRMcHFSeM;u$JVy6ol>N^tUP=duvaeeF~h(nu${Wg(oo z+Q5{6OINXN890&Ef4dYta@nOOt31Xhh2UJ+uoN=e*pxk}p*6x+6B)hQ^WF7A2tb;X{#3^LaEK#_6@Vji#ey1M->5Wq%E=Nkpr?VXOUt?R3lyoAt_1LzK5uq(qeq_->cczUzEPZ07 zQmJmiwt22ze_7HN1v&6{y7?}$1Yp@B>pYQ ze^$SCovX%Oyd83%Va;S(c2a#HCvp5plDSkFf6w(r``qFbG$f(zIM_<{@T?#I&B^)s z(T^t|kKdl1U%Wp$J-av;!C({$SdvUH9R~oOKw-bObO3|MZ_~wiB(9bl#K?IS)%=@$ z?Y?=l`|{=G7FUKINx}yP_vfS6r!S8#PT!t=e1G!e$*;vx{c`J4zDED^_|IMQ!~W_A zzMg=J1AozzqF$oa?P|+=JdH$4m7LRBu488hcACnS!E{+eOLAoz26AdDn*wW)f%-s6 zv3#B_hFXc)Sbayb{mG=K=*g#oYgCB0Vh_X*GpQmcMspuowW!~ya%I{c<#9j28LIv< zVN!c=ZYn~8tQ!D&Xm(25mo3p7PEaN0d5=POtbdeoBTHTYkQpN;83!kyh7gs`xIMtQ z(}T7H*$`Yq3FoMWfNPDls_|~*Y6wYN0DAFQlPhH-si@nGee9etuOq70I=@KTj3g=92M1{a9lz4NxhzY1Y zS$_(-aRTw+6u6Bf_dL7f0s!YsVvbAtmRJo&UmlL6`J_;P>TA^ zV)^aZjE`$A@SZ&3M7!`o&ydJe!jM;rV48mEZ95qgJA(Bv2H##3Y*DnUyk6 z)upKV*3puN69q%_W99f!aHoQcdVd2u6;3qtcgv^DDNTbq#@F<^>sU>Cue5;6Ll{=$ zSg@d8@{W^yC3>>%@{9CHE>7#nJC#qVfJA+klW%$@#C`3U-2P7$VXhA{dgd!~@j6Q@ zyPm0+jm{J`#)|Gpe>Ps^FD2&QavaKLi^-`{y*<_jnZ6q-!h@@SlgGG$Q-36VbIBB% z0B1@zjDbP638zPHkRce(dqmjmh4XH?Sh$Yya9SgBm77()0>u^9c3&QOI1RB|gB#8- z#4icO!})WHY+UB$UiZ1KUXSmMla!4^4Y)&AG0e!KN*T^+#D< zxp1!I1}sZBU9sa;M)tNdTNH32Ai|67=EKDo-9Jj$}@PR+-C zq)IZ~%iT-%7ENMSlDA%4E`4WDhBldIIJ5e5qKCVyp3r zo)>JRd%LdHe1C%sMLvm1Pdemk_#Q+xJ#UarR5!>Nw4%Biby@`2b|Z)zsnIz5f2baRbnX>+R?u&uSb>~P=D&$HJy9a(edR8Fc#%|!6SZ(YzTdU*UO%Hj1 z%q%7_bUy``sG+A5`b15QArqE5ShS726J(Qxf{4|3On+&Z%Xds^^ZtCt^c=uS?y161 z5-;|Q*Nu3gWeyhNr3grruqLU5o5e$A>$u9230@OX{lok=OTXmebUKQ^zFo}UUcX2e z(^0-kZcm&V-tvGPPiFHwF2oJwHJ6BN%1h_2wwrkVT0&WgO17gMoF#~fb<}b(PySFL zKBf5FJ%2WV4JQ)f&Y5zt>6Dw=_13%GI!i&vjaq?yM0q4^FWBABl*Sub+DlO)r&zAN z(p>L~0oREg&e+?4Z4Kw^b!%J0X?Gip=c8xDZ7@RsPGtKQG6djExBJNupl84_ZW>zl z8&jL~vVGw=eC-PjE2%>y#Ac;Tuz~m#B=lk=A%87{Z5hue%G4mew%*!Bj7nDr!tafz zJQ#vc0gJD_$J8LLc6HFAQ$uBc!MAN_rB;iVzVT22=1DPkd;eMdJQPk3AqA|~Mkr_}`!aJAm7LKM<=pa9{o zgnx={xlQHvUIPio)Hs`Dr9^>#%XJ(OBR7ReDrN(~5J8nD9ZsOk=KT zU8KjASIlL4Xbf>&oKv(aROQ^263Y}5t$!4pi-F+4Vyn|b0ZS)yv#-l7HF^r8vq`k; z*f5+;M=JMKT|ZyRZ6juBp3IZaOWLck+C|dzp9*=9(I)}*=%K$14y9uxJ;Kx`nRu;H z5uyM4_rdPr@Bhv>RQI4B;G7V|P?g3gSfYr6h@?B1+9b1$6vXk6zg zGB2ij!G(BA<5@;augOE{LnFG(Qca#Ar3fh&7Mbap$=Zc;L%LNMaBj#(XszMg5G1X2 zxb98)xW#m|g0nz2!h{Rwd*E%sYJUYBNQ#DQ;7|b5$&elQthWFS(@uv|LpHF};WUqq z-C$&Ci;0q;03gfNMjWpcM08?(Q6@g(T8LyR%(M{Uq>pYFBAmdn!G#E?aUd3A<8U1c zxJFX5akvfzStDbZc;$x0(#ZVf+B76d%G4%Vcxqd%5uqmqRwD^o7f4h(dVlb(Te@SS zylzpK_SlOPy3xzGaN#tKZWk_`h!N^=*^jPQO8KK@cv1P>j|wirB5z~AuJd~yLj@d| zklvRa3uk|HyrAyej-^+EqO*5)TOF#pOmXa;otAduDxN_SuT2~Eg@d?+nFo7~B0$cv zWXK)(@wa&TDZL$VM|~i3C4WF207Bwv50uBetbVzldE4>pAhJWaC58;L6`ppDS zd{Qg6%vz+y>vHSeIF9mI#M69{#U{r^Z9207SJzJIG?s7k#i|tPx$IUX6+Z7wk+8;-$JXc=XsZESyaXcsMA+ zv+KFGJyBf4A!SOp1|!L^i0}f}AYwYw(!}m6hHR?riXwDO$$!L72{F4DV{jZqXeT}Ngy6kl>j*2Kk zr993T6AAAoOBb`=Kq`#l=Y8krM`7AfEN+^h*1}rE@(-~M9L*H23>+$$pcPrBe<+w* zripVdZpBTzhT(vT?zJTxG(pjpnv+>=&U`UZwZ>dmm4DWnT>O7TIV;a+1*#|)i`?%f zQyF|3tpsP_n`A$(LPBuhgb)4E^iE8o8>w|I66Hr)dWdX~tUrDd%fCDlk?hh{q&`ol z<#~z5H))p4Zzo*cA&PXa)k>7e%cJRalI8PbIe6ki4vT)b8q3nEHG|zL%O(QvBpHpy z@k`?+RDY1o2P@BEcaX_$5DQtgy&Pfn#yh|}rS-{$ooxF5-~^1W39~|g?HE;RLcYEv zITr^j9759l5dfy-tUm%|$!8@MYqC2EyUd;gmOE{y@J708dHG?nTKITI=|_f#55+HW za&s%UlcJ=Gqv5UDUWHh7)~h0{k^*=XXWLw}Pk%o*B-8ode-~dYW_xz{pZy(ixFZgB z#FHKIct5H~X^ zl78G5`%<J0>6KvTi!0;d=_Na|XWxr~Jn}v$w%6a2-?^49Q7iGCVqmJ#4mS-4m;c-BA%Ja;w+^5%Y8&jhVIz%vKt7nk?0xjl@2^naTsk zu{6eems=N?TifCv{}A4Xev}WfZ627=lz+5&9&-h?(RB#d^53-1fEi6g%l}m}9qDD9 z#VTlbWLAGq&BZVp4;NzzMxO1i4E z1J5x#@Pc&*(xtw78S_|LdCO70NDCADC|eHs|6FeU<#KCBTyFi%d^ho9Rxi+`2pbsliI*|@o@xD+q9!_*_XMz%eQrY5ObU;mC} zmqvHSGqm!$I=7(K1IuKC!W_3j)KQ+t+1xs-o-3s=HP_a_@T;L`i;;t=aqr`v>gm0m zwVu(mA6Kh*mBrK`O|4)PBC)ME3M{3wdSKzu1vZ7!1B-$twYgT_rsG1N(SL*@_sXM* zI1U;QEHb*tYsKM#POfTo9KbMmppi7N>$#fVbUx}}k8TAw=k7p*Y8HtEFn1_pi|>#$ z*lQJ<#A&$<_8LSRaW%c^*wDcq-D1>cwq6hVr-GJ4F9;kP2O1n*qAD-8J~4`+O5KX` zWeALVzbhATJT)ZJOc)8dtACK`v3|;3jx3Te1PzoXe7Tl1A?=l`MVjDcwoe9>1XR(K zC;`TgrE`KOVIs*kgdwqB3`mK?WB*Cq-aP1X+%k4lFqqFNp{)jNCpSHdrx=w zALFJ2ltR0>iKn#$N}ozgXpWELbUcprXn!!|5;~3OXgm(FlMD`b_kW)34xZsKgCYw% zI;JHg1vn^=;L%xeYOF>f_jdRZx{4MkghDWWlEUyjuBTWTJXH|(50Lj#O(0l~8t*6! z(9;e|s1OA22#_WLwC)J24&PDONUPbD^}F%HI<8(UlJUr6<_@0i?(OgHx2pA0SI-PY zX#}QvC>qXH^X_>`xdLdcbcYi?S9!263}>LjAHXxk)tr$ zS@GV~_uz1MAO!+;`C{aCZ4Z2rwEI7||paQ~AXw9to=*=Jg1| zcz3I4cV_A<7Z8l_TnBO@Pg7%|Vi3I6I0Xnst}^Wil&~~ALN*cc?go^cTO05rt23ko4u3{k!zL12+6(%JSV-$(nG-OLzX*G5FprsMJnj_QAp)id@fG1M!>`z1 zVz_!=>Oj(@ACc3fStQz?tjLf`kBiDf;mlmQhN!>-Q)!{_cJadhgLkM3=yh;(S?}ms=`x zCo};_j{r=q66#{{qS=gCNGOlHPdL+#L@;eiCx>4m-HF5TDQ@DqCctA0o1xN|h-K6a zqd^Xnl5{uMFd0cFa}863K)yCR%St?}S(e{@v#jprlo^XeK{2U|`Qx&M(HH z!hh5hR!kKNS?gRm!TJZr8OD0Iof+mlKf=rz9Zqqphze3uFr!8N6dOxQPO<)hZ;D}} z3;z^zp37mDiteTu=9B1ViqRKyW{L~@SWdG2k#U;Q-r&_V^LjjBN(s_L(|X*>^rAII zI)XbhUUdx1nRh<&PCxCa2Xi=tOmVvoTz{7ilSc<;SlEEK1ZGC))>{G-7|@o7S{koa zV!!z)9`UUWm~EiJ+UT!iM9$)G%MIB^9?~V=aO~l@n9s@q9;oxlM+*Vt$*YU-F_n(T8cin5h8d zc=UD_XOT*7IQcq^XX*#92}$Sy)?}4ENUjy5nQU#Sp=h#|`8=M?BtTzSD+LbvH13J$ zptXn&Fthv=>kfUnq2-(4Nrr$48-Hi!NEIjlrN5Y(c~VPE;$^){t)U8_o@Srz?zdwE zARK2YZDEhzfk;Yqxf3o@rp=%iK9<( zra}djDUea7Ffz@me#JmvwhNpuE8nMEkc&*f~{Fanzm zqiGw=&pum$2#^wHwIma=h<_-QLR4H7cdTQ`c*%sQ7|_Is@#^ z|93@frfi7|QZp`H_0rYr56o8=W`B8mZ>dmv%MaK%Cr~M7oXZ52XvWnRgIP;$5`A+{ z(tb&ia;M_dMyqTiE)9duG+Wn*`8-RfHyhW9=#(@*orp?4Q!NI0bAO0wsOVI*R+N5J zP!t*5jLnahEjvKxsZmug0RxX0lq$K zn({3~eC}9zA?m-zwh}3ZDBDVGm7hy&ixR@LeiT`<^A#r(KR+K89GyJSiIXhsJ=Yl2 z^~ag4z6J?aps}iA{(nHM@^db%r0gpYrH)&JVCrAgvXK-~yPlXlB+}jLJrt;hb<0}yPoFAlG0_OdXc7|n3g<& zEgAy!UY-KqPRDorz(~nK_s5@1${D&}{$z}x^&qt5BuAkHJkl(~@j-P)QyASbC6fcm zZr_%8+J8bj@h7O#hK(S-J&?}4iSIN-_|ql=7a!pQDxfHg=v}aE1!b&SYJmciKdGGt zsihvkk*j01B#OP7$>hVFA_M6sPj?5%SbQ8;^#hX@l}vM?%pMhvVmz|BcFE4tnW|c^ zTv;~n#L>QgiZ99hR)yY3>s-g%coRJc&{0Q5e}9q(p*4)mE%BF^&m&&XUMD=(28%8J zV#LMYe^;3%2AKK8pK?M&)*yLaxg3|!xNtP90lk9KQ$On1z{{=k!@Z}Ep6wl|TJ44^ zO0&aUZXJ!|uj02jyx6Jw1H<=;_nFL-h+Dl>x^rp&X}0&kP^NWr$uJhbEq~Vb%Cl$thx><5p7O0HIDV_qUb!;3?-sbt z@;X()o8pl;k2ASx(sU|*jIvQY&DE|s+#PWCl1!H1+ciVwzKCuXac=fNi(T}TeHXz| zX>E7W0p~8FSG)BooX3M_2YZiBtGnp)Ip-%Q^@iU2gz__C5W$f$rO`@P1?!Rvh?l>vtyo!qw#+)rV?|pW1c=SM%g1yS-|QN za1S@%f>)qf2x(}?DCN!+i-QggRj)sp-2JHVP~9L?dz*`_paz9nk1cSKy>i|d-CXsZ&-|bp=12At_3x zI^O*@7GuTan_jDwcll8+Zj#UOG(Z7|28t&R2vESGTWoeKSIY#aOn(;>+S>2;i!ln2 z!#zO<-k{<@D;v{<`q_ZDUV(@y+O1It{v?|9OHuJ#Q7wB_6?+<_K@60r86ofSw&O1LCH_cG0BHIB>C|^HX=Ef3n03QAO1yZ z@1s$qm@S>N1$S6--G8YFj!(AOnBw|PNQ3F)J0)?Dk(7iRt_JHXuJQ?R$TEV5)mqA?4!g~leRFz# zetP!f$5*E(uU~$Ab8>!u^yA6LS8w0HIl3r(5SLp{FEoL{VJ`k7w>2zPN_mp!@{fIY zxy8kbN|O3aZGY0~ZA*pi?SPH~f{22MUfvu+B(xI*`SIo6LB;g7wv2M2gi(L!qBuL4m@$a zA6yHvce$l@{pHrSD+G2#^&!0xou~ABHo|K-sv1>RTYteVggvADg5#@Ei1g4bec+4& z434bc0NpkmO5LsGgoB+oA~_qxB5TPhElMpnOY*QJGLz{%HB2_f*ix4h)-Y8hH(c_v zf#heBmvAI;b6Mq@pn1B;h5?d&3RHS6artt^jRDmEtd5%)4gzA-UZdFFlJKzr6~%F? zE97xOBY%r)CP4&;*lt89z#*_$p`iEt+7UD|3%;l3Cc$0FcmSZBY!L%c6c_cv3dBZ9yT4H0FGR7=O)$j zB%1epeg+j4WDRI8=?cf5hPoB1wuWuIk=D^H!0z=%lFJcIN~&Cqk}tr5h_lg&0Wtq$=@Dxq` z+bSZH)KYV2p^u7 zFtI(Hp%XN8@cnKJc)^efBEGiuK?qG@B!6NzAreHOO~P{Sff}tzSk66BqY*@N3u-hX z?HDMpzcFew9wsY4H5w68OC~D}H5w5SDFum#9SsQ$#eUVA9gT>Iho{ibjz)ykST#&= z>}WL09b-^4HH9&o10@Ivt)T+tQ88v_Mb<|~5P_j0=KaRJ?;O}FwD0)HFq zqq7oGCGwcMi%lA89inE2s9|&(@yy#QGl|v|je-e||KcOuL|55^fp{57Y2$)U1ciXi z{N$Q6Bh+bS^lk!De_lfpU2%W43TGnZIG4 z_Fvt%zW(&3or5Djq}c4ONPvQC0Dm0rRU)0Lq|s`4AE^v2bYw)Uj47Jq5SyRRW(MKQ z@dX1(tr=8}AvGql7{zlbTKsj539#|`s!WCwy2c(RSd`c_jf8GJ`pPDsuf>1rl1tmJ zUIv0hbseN_S7&l@fwUu_TfVA@ZKb5`l6GD1m@QwlT~d8qU28^66YScuz<<$pMNM|f zJ42yosfBK;AZ=qrd#7A86gHOH&bWHMwo`udfQtgDHRViwCtZ8MS#sqfQNbXAR@5}! zEn_0HrPNy50(>V6G-=HWh?I;=AbckabiuWbQ84j2CP)(YHxFH zcr@P)+ZhzkSyP{qQye~)=T^uJ`Dkdsh`1<{v}D_@a2eiF zW?U2-xMJw7kQIcd%-9;$FaWK-71S~XC~{X|0XGU#hfFL7uk%|8*D{IuNJ}X!EsX-( zijcSlrrWM5& zN7&Vks*pFEMPe{1R(CL2o=-Oy6!{b@=GiRIr+79=Y~H86?!aVx7B*`j*^}5Mv}c5C z3<=hIXGx_t4vVQr8@KMC60Lh{%X8$75`j`=b@eWH<>fcib$`+F8kY#YQOc|7Lj~Eo zXWw+lHG?*H{r`+|n$XnQWxc6se4lHL&*mX|Mmb67g}q!6%IZ-5p?+y~bFG4Bl%oWb z3VpUY=gqT5#(mYv+fVY7$!vb-B~Q1fj(sGs#zs724k%MsS{D|pBo_3wt4i6|=ZT_7 zH%^Cenkp7=Cx2LNl*nQ&}rWxarlV*rt+xePAqdHGe4PP<`eGfE4At^vtr24@sXe zNjFroY)P)IE--L%jhY-wHR)L;n(Q1|qES0|4@ZLmoL}pi=I``S6jDqLftq-4l_Me| zN@xvAeks5t`9(!csd>USag@R)R%WRkYGjrhD^^q*)bq$TCK!(rS6dXPkXpm;m1Z}x zit4`Slz&zFX0~f#g-WL7Uh}AI*^;m_V_~J0xw6)i&nT}@`LdL`Hki8{901VD3_A!KuF;Pk$ad!FMIJ^hg+?b>fC7t%@R>$z&Us z&3X3+=;YpFEti9#IuTpwG~X`7)=|NV)UDux(}%lW`xJek1y?Z|R&*5sZ*~!IiZ5!& zPH4^xlYkW|tz+7#Cay=9^sqZO)$VrkP zAAb$8QD7&tfaB^5s5dBCf~APmrgsZyxQ)`OLOyA9>m)9;k^nA`QbCwq3g#_mPckl7 zG6@8Bxt2TC3JuQx#VWM5so4RxEZ<(l9+0?fPB_!I8$%Ax z+(p;;_BZx>@we4nVQYLVC$(GTTis6V>Zk!M6Z;~0s8+&Hi6TM2JC3puHwF72cYo8H z{YQ_=qXZMNFOtwYJitvADB3_EJneyE2W-zF;=caczgC3LuYP^=nyKHQq(I=vhq1cG zQ7bPU_g_a>aga3@i3pSjXhh@aE?vy~KfOr5GT{Nmg%1xCzcT?MC}lcayr3Zpwim8` zjcgLMKEWo%193DJA5IlX`b=ux>3>|>@X=h1l6)ptM=p}7Ia^wq(j{4!Bh`Y%u#u?Y zFqInEp-R};HVHD-ErVSV>LUIspBm-jL-H=ltZk{bl{G{|Co?Qsyx>(vKtY5DF^?*# z=oG=O=qM#P!xgWwsPW>PsX@G)R>Smz8VjbD@$%T6AgvMPRvX1%Ih6w(SAVjRali}N z^>J{5jaf$nFNm2MB#2=VDn&`L&Ioc;y&i~TMKKuXpmbOApstv=s{}+e9hoI8=4qin zm^1?%EaK@AlXigPLF$*WEyq|Myi$=`XKnAOj7~FRVb>iNFkaLa2iSZui?g2E`oU8w z76eWFYLDkq^!4+2ej&AK&wnhX@1=6;%YSUxXaZWjs^Vygu$&Z8l=tN-dIkrT)FKUe zF0tc-7u;Meb}p8ENB^Q738UGO{#`VU$NxIhZ|+QQi4kFN)J3-{Y9LHlW;|?#jLZE(5;x9~~@RH5roPYV5&pCs)NAJx! zL+}CcSKjKzZ?N&BKiffqaB!E02(1Z?wUkVii$NV1#_IYiz1AdE;?}54E_V^Z%w%&H z;e~LWyT}X^!Fxs?>mf#xTc9hV31WQMWRaA8xBE!}EFzPd+ zW1#?Bwub5;C-Zp1Wq-pF`~~;oDByGT5YPL5SC8JxT;6=D7l6%YLv+Ee`E2wk^!Qvd zG#T8HONQo;)h-#e9}9_JI%xIN<%V9e5&0R2x^V|A9W-TOr~EUg3Vcs@fejccduTh={Sz2B3ArEe4|Jc_3lgW>%IfM1lPc1TCH#<2@0i2 zP?K21KmJi-t7#A*jYUiM7?;L1p8uFdvs*>hpkQ&0A>CJ8L8aZqtdQu+q-N^7jR`F|)B%#D=U>b;b9--`j)Xwh|v`>NjY57n1S@U45#Q@Ptw_c~l1q3fQS z{h|7xg6-d@=^Sxaf%Ta-(=2*fG9hTDRk&KG>x4hq#-1kWxq6J3*h~%5gfZI*3(ny1 zov==)$vlb1$scj9U0|;3OU$(Qr{*@j?5X5Bh{4$$-G3j%;0%n=K}=hB$#MuC8QZIj zPcf!!RtTK55k4gKhtkZ<*iJxjz6An?rC1N2)rx^*LrfFCOd<$QuwcEaM%^4g*(cl_ zzmdQCMcM}G7w$XbN}N3Tws>%$QbG2SyqK6=dS6RVcLz^9x+k{Y>vG4(>5bwsOed3Q zI?DTn*?(rRxg31RWQL;uNglnM+NmfZTXMkdzXNCJ+oz zP%22-Wy3U!`#&y{^LRd&BG*$r)aYd_FpRVf1Ct6MKb8-(DFGCRAc)Io?$_#TXpEk; zxqt1&V_8}e)_iy$=ZmptyFFFg4ZXYxg4+u&E|Tt-IG1VoOi)q0fgY%{D3fOs7w9|n z2|LVITqJsBp_{@;ZePVAk`TgC|2+^Fx3N&?4q*=-;$4=0PDa)}aTVp#T8?HjdHObK zUPf>`kvvRrQG`(Tol=m?lYdMszUX2;sjBHC{vxINt6xPtj^%^%TnwYB zxQfMWEFT=z*X^N!MI~B$YWC1t!$|E?K+);D&CxIMN{i}LqF{%Mb?5q zapYAbmN`iaYvjL3zrIsO&uuy$1x{-C^EG^z+0Ce9C1r5b32kC&Pm5769ASEWBfVm1 zFs(?cX-#2eAm<8imIc0A=jtM5DRnVRot9z=-%!#_TI^6@2}2o&AHGOL34fT9ZsC_P zD0VldLBQIDoC8m_09OOAPBM#Jo_#wQ^tMJJVF2*K8cerc%@SSK(sG8C54bMKH=WS( z1Z&6n;$-&J>e@dckjw|;WnanF!`YHoEHK!2JH2Nc5mRnEdr37W^1Kyp7Fw4%l*Nv{J6Grm05p2u@h z9BhY4oHL=IaN(S@StNCP?kfaOnvcU)hh>sCXlNsM<<5HN$Xs9cmJz%ANMHIPrG$s2Tqa0=Gz_d9^i4RWy_QZuLQ_wv=VcwM zye3+_6HbsVPn!$4o`37B+7aa_rT%Bd$^Z7cce(XyaJl7^{j``jthpFi8R+&}T7;CQ zuu{%{w@+yiZT&q^_NTeZk5((daJ3doz;`K50fn~w9*7@IcI&6o($gr*t5N9HsNhz5 zzyujBHNAKFloqL1D1a2{EuGGjnoV38*r1j{qo){{1-O0%eSZZTlYDvB(zc{DMG?IZ znYR2hQt{CT;^OVgx6e(6k@AOJ#bash*;tq?o}{1Skw~XQa{#$o+{h1AD3<(G#nLcg zrWmCX^X+^-%b!1dDBsLiDHc{NYuWe#zs9e|h=W-KT>`gM)(uCX}Qy z)DJ|Gi|gcTtbg*5#8@_&iO+GCTL$d&mw#mvr_V^$?zmPN<@B!D!H2^%)A#f9w6cl6X8azdXv~Xj^KN$8;eyf0qF!)TGK zyu0EywFo>=u1TjS@|R5TNww}CR4)80;MCae$SGOmB7aXOCEb~eUfjPCuLi7RPb!4{ zKupuQ_>yLyRP3J7{MYGFf=zN0>LIn;m7M|g%jL|d2kg9!#MK=S_`x2jO6mg*sk*#- z`8LzmAM8;y4A=9MWD``kh(=R*Xi(Fo#k(|J>R5D5!n3=jx#!5O$$uNv&bLH&H z7sK1tRDb5$VXx#oR|ly2MxKM@7SN86*&>^zc|5+8+eJan7c(82T-rAZwpp;nV&y_k z)j?BNF3EW)$pW@zNK-*fCh}m9qJ)-g1uA@8XSTf3%dS@>y7d2g^4rIE?@!LpPhRfW zmAM-XekHjE27Ac_s!3|MXA_xh5O z#;7H?nOq(NRJz)-QNI3ixONDxuK_CQjH@jU=gy(_EThR|3Emwk?8doR%!HzmP*%xo z6@M9$8^4J(n2e6AR|`aZct=mYN+33g6|mY}A`Or6>2w-rD&>LE=Q=>;h7}vE5*F-U zwNxUASJ!Svcg3UC16~>VYZ9^WS8Q5H{)>g`p!OP~?L=Dwja z%6tp%0G*mJK&6Ehqg0BAbLY8amHBVgD1S+Ss6;XloPP>Sk76c}I;gGWHnA;=MSZU0 z>Rv?IE7@UrWXUVPPS9;mSgfp-^ zpxdI@;3cQd^2buy+~U)o(xA_u$6w>&VjkPi`R0|PQNX}{U}9I#bup)SEfSFXXn&r0 zI^|I{QnQAb&yxAFRkFh>4W@910V=JHt1YZ^g)M`5fJ#)ehVb&5b7aDqM4tSi)0g!< zM-di!vkGgf4-TaTH4V@?Zfps`19Hk*af`Sf@#O@1xuX*Z6Qv9fMJ~G`DeB(vr#QK} zo%bAIN}`!w*x#{5rw!2QZ4lC5l7Ep@_#ja8D@L3YUx)HEfvApCeRHEit>p>nI~;K@ z5h*%xu5MI+MPOGS|H?SL=*+u1(7z!;|HcWLawOnVKj;iSwgxwsxjaB+-|;$r&{=p= z-@Tp1Q={Axv^M01db;}v>xM$7?iC8)yH&(*KgrK;^(|e`dsjeP1E`ce zS7thZ@>_qzF_C(UBnShn=hRUk-9MH`L2p~O!0Q1joiD5ph>c=JCYL^d6Z^W+2XK~N zoeSD5YX4o_9${pgo2IxZddJlkR*3PPaPdiW55(~}%`GdJ!^g$MXf;4( z(D9yP(V29dS{$7?S2{WyHGc9nnTORl9ttJSq2`?KI=0-Lt&$A5DUPSx--Hbn<$sXx*b%qM$Q#N) zLxIZJ1N9Cwj!k=3+okRqLSL+MN9XR@gGH5pN+p$5E|h~p3J;EANEV4@SVAlkUEBbb z-G^8N_`bI_FA1Rq=mb8W@j<&rMknh@CF z)FL{?Ph~LWakYGc!+%BmZ}z&dXXqxkxd5V%*&ZW}*d&!Xu|#_;%GaiLIEn?Nf*iNy z%2A0OqDn)&Bg%ZgLEZ{$G>dW#B#+ms{fdau;;GliWa8(eTqn`XP@qgi(h^O@B&c5tT3*W#CnyZ4i1Z z+6rP@)EHmoO)L+E@h2J&XP8_D4XjB#uj_1OBV6YT<|Q`ViUp0>7AfU zruF>-Xpnx9!hdJYr2ci9O`>_vSAS~98TxJC=A-trc}-DM!PqU$#}xs*52xvc>v-ad z+amAU_u=e3!q}{x*4f6VS@mhAl6(7b{#}RLai5kqCzc+HVF$HY_DSh-e~O{X+7i9$ zxkvn?dhm(abm~4SwNAat#{7{4lVyrOWH?-8vL*55Hh&q%_LS$G?8^4O|2#t7eN+c? z$gwj%&`B(ERiw{mL{h zO>56vB=6&!KrwX^a}yp+SsYEIlpFVrj_MoH=#6t4NELy^w7K#}DCQo%{3c{Y;-jhf zaDS?NhqH7lKNR!ZXf8&^f2Y_1&9#Un++0?PF>~O_>LsQap|El#G+`uXslx9{8G{vm z%_d=HIoo7395Lu9T;g|ie$y5VqRcM=?&d1Rp$fpOkqPYDN9ZU>6zh(*?H`D!P(vpb3J9!#=Il5qQU4ZCKc%;W`tIxF zqL^l$l4aI6gv9~M%UT@X5g@iqt$b|zE|nhFykkWe=e$#ibWE?45m%qFl8v*^)Dk47 z&$HWnTI;c|uXm2xMv2@13yqkpR`iO0vk zT!i|sASfStG@Qrv+g%D-iRls2e1JJ+e3(KKp3*od>#nkRI+ACWo5Rq6sOz{_nK=pF zh4kGcBqmV)`7mKr9=36+AS_(6VjkUiB?7@Oi(-}G*%4^k7{0R4gtPW>wd}KXamgR+ z%063{pLQiA(^33YowrAU8h;4H9^jAKOr@Xk<>B3IVCB^6l}ylzeN8td|)+K=LM19VV3>4x% zvrD~71|R_SwflPsd7he!hd_V|!D53sd3@H9dX?-n0Qa%`dpvG}VTC64(K~1f>>^Ud z#{2nPS^|?^ea<{7CVv6V_v60$xh{p+Tg751C$Ric4U;tfmIZ|5&wcsNWM44>rlx3U zz}IPZ5)E&w;Bp|YN>K%Ai@sMvAEGoz+&z zdb_KX3K(g%y#9LlIf=hKbRw;nx0G9aaaLeto4JknFWFL2$A7Z81{w7CF1Lh~5~-^2 zSbX~7;??fc%dP+N-(Cr&B3jbJn522c&|~fN&;O zc=(`I4?HKPh!q?@95oE?XKrwtPF2R|CYZs{S2@Y3*yhEhj+6k`U!Q}YOOY|n-8<9g z4ne3wyB754vM2fcZX6%0 z7@XyZ#N+YDtK{b6*go=*vk!2D8od)kW2q_>_^#NV*uVPS?f`s1gTJmgzKy0gvH8== z+oDSk>JS1`XL@&+wez&J4Fgl{ToH|vo2d%ZD7toha&~d@{^Nh^lUEnA>yu<^h!2;# zZtn^2+9Re3uHet4jaH~zE-cNmH4Gl3zxa44oaeTcRKJ`K74ygKIp3dC2 zy!(Qlxnbijx)@-3E{7v@18X&(MMKB_+Us+#)Mm^d7)f&<@{*obXxD|B3sxkw>_Cg+ zXKoaDCD_q8@MVAd)isF9dD-71p1@4j(Z7yh-{cXja?X)6_OqP6Z|@}5)oB8+aPH@5 zrH!y}{(wN!6;|WfwN^bAE#-##rR zQ5Rn+e*5^z9^`;L*i#>;Q(fify}F&xm%sbB6{~H?{-stKL3Ps1YN8V1Sa&@3rr0_n zmB4-d60%8RV5k18$eolOd4`QE1Q3a6&J5$O>F+5!o?(+=C#P-Y#p5f zYT7?%Zyz67WJf?b9rN2bo`+_EX2DZvvJDbxPYWH(v|O|=qwLegZ9I{BKF<-$)R^1Y z{4@$@b{)bKl~AtENI3-}dJyr!L3THFHJh#2wfS=;-9CrU=)@gFAx$+9tkGU}b4<*K zpnHGg?BwT@_d)$6$L(NufD9xxPH34u?iN7^w0ng^w>*^gNFFFHrGw1-vSSW(al&Nf>as*(in%7F7s z@hhXW8CBJ{;y22qY_w`jAAxQ&uNqo0hpvBC4J9zu!JtGQCydQ$9(01MW4;w9=z1An zz3|m6-|}IH&=0)&oyottt8#gEuhL9EggK;RtK_1SY2DtUq5({lD7H`?I>EM##0FYa zf+n(Zl#2W$5Q(veI{K(3gggnOlXXkmrh{=sXYe{OmW!Fw8-&W@<=MaJ+jnGgRZk%&{u~|PCw{X_!KQJ@tM_u z-K}?OXnX6Ay4~OSMC(TTn=rCXf@OcJnz!sUso}i#E?QiS2vSs#(zWf-B3w|kaoyaZ zhm?`+ojS!UxyY}gEHrI}VTITecnJ@uaQj@P*h#~lRMBbLg`(qj{UejH3r{h3^Qeq# z+qk{;Y}Gs}v}!=eC%41e6cn_9Av!)$H zX}r$gzB#!#eRFaSxE2PWXJLQv1b@!u4Y^vHwB3#{Edr}~X00feao_YuQ(hHMU>&g7 zPT{X#$nF{Rz=GPxOTJZd&}=N*7D?BIF9OiOGlMqmK?UU*R7Zn!m1Bz?Kl(KeL_{z` zCDd{nE2Mz30(wcfasi=M`ZiD$XTixdU&v#zsUxFEB=tDykOz_EVj6$T!>X8P@*pgs zje-;gMBL4;VT|3WreB4U&ZE`B{cwKr@!k8AS0B$$|8|1bPFS>!Zdp2+?*`W_hS-7= z1gJ_7VjS4Kid+$w5AVj}TweaW{g1rzys3UN9V2!^>D&y%%lx_Tm2h2*^8BY#Op5Z>o$L6sGV*7|7Y*ry4yCA zHPF9;qj{kniW2Ggmh*5TOH`~q)@57rWHO^HEr^69#3aE1K--!u|M%0~0LTVdXjC-{ zAT@imW@p=!tp2LIx^7*U%%|o=fXcBW=^ew`rq`}zcg>gi?wb94cg^H2?8S@XTUhKx zF*L_`65RX3P?UfFJ#}a9y%%1Ip9BUP%U{scC}RbJsm=FRPBTu&F$Up%?~ldI7yG-I z`>_}H+_~R7h$1hHRe6!C{y6;CLab+OKl=ioM@U8qoK5dk{85$`_D+YFmj}NLZ%)qs zcJSfk=;mVh@$&ra=IG?|;={pj!z1yHqv7An`zEWvFt&f(g)l#vg8kFkU(e2eJ-azP zKRrD-J7NM$7`1Ewo92#3a_qJIgS?HOS$O_SpvW*}>_M8#4S-*8sPieLOj2 z2anNDH86i)ygxtV-*JpOGl75xst<9D>V#u4l-R4mS7a7hA-^dBu6Le znYJ;l>&KRhW3-?tMAqN!W0xW*E!Abn4|*r(!)zWc7r_K=l=M0hFr>BDI~a|`nH+gD zv3NBqsUq>^tElHS5Y>gSWVyDcR+>0%DT0iLZNq~YdRxLEOJRLf1y#oJQhjvD z6ZL?E0jH8ctM)A^&&Tc?#Ro7!TaG7RZXrTJ2&ekUo0u_ONAa1nG&4-&Kxw`xc?y4c z1w{u(Fh!t0y`;@m-*v|7+l`P}t05-oVxSBCe@69dpcFwnXDRqRw!vV-$hrxUG{ zmH&y(I-hmdcEvymO)5|_hn3{hf$Mf$M+xn2Mjso%`g3V%>(z?8(?-2x+p~ZCENx^S zorj)9uFGQYn>Sj--i<%|;!gZ5ihCS{Q#Zbe)gxU#tY(zkuPN;(NYlxaf!IzSX2!2V z9QdQVhiUNjU*6Y|d%eSCMZin2_Rf%4?LcnbfakN)qT|@EQOWJ zh#Q4{S4I#1hHlg-3!BTo3SNI0hG7tAjk)p7*j_rM>v|QrUm=>-op>3_yS4j#5nY+zq=- zcTmIJ&7sY1+U2LiL-EIM;>cItEG%%WbZ1gruWQ9gXiH%wviW9_EZx`W@CR_SQY$~n z&^ig0SII_qkzB9Wl%9q;?mc$>$s+WG*}8;v90t?Oja-lTcGElByHl2KhbPqehSrKO z`O+P&-tozY;m!HQ<;{QaWrbIyK*HC|^Xy_W!N~TTMP}q~FCzqE3DtIGx zS{k~MEyqaSw3nOshAl?&7G28w)+R(VLdzo36!vjo^0JQ0_>^h+pZ&krrj2jm|zd2zVoaXdeh*G*V(U#yuR2S zAX)t_)*Ud~fP{^#JE@Pb6n=7bwF)9-%Dlyor3Tnuo4wA+??ejlgRV2KFC-l~+9+r} z#9jC?!{Z|nF>QZ{wfxc$${dnT0bb`?g6PX6)&2hUPS?5KF+O<^@!|(oXLyq|s>NL9 zc%@?sys_FujS@C|prSD1)5{ojNZplC(|EhXww3*TP{EX9Ew`hI%YsV5X8JsOMXa>m zd;Xl~O{Kq&j=?;4lCZ04G2}UEDAtkxCw}tI52s1*A)bHOP=6mCc6sjXIyAD<)5MyU9hp3Nlbkqk{`^^1U<(4~o@{QA z8ob{d!j3lNGwi!0s&-EXWzkR|OXGX)G|E}skMi&Z!?{jk8h zU8W5~HIdal&Lkfy$9Bv3b6puW`u6&zR+Fb=Q`^01kP|;Fe3}An>N!CSGpq&T{tEEd5gqxi#J_qEoC1_^JUpFF};17jvfVJDEOwwMHpTIY+6?# zXK|Z#6>WFW?N8rptQ#w$ ztc8D-&=o=q|M=g>w?xGXv7!OPE5<0K5qyXZi!pqIRkIkQ><%?ge%<75LXc4?sQYMK z5M)KFtV9_BKYDmKQ%+GIRTs;(7DteXCOz@}NO7V}e#_gqF@|qQx^XFnZ!yYdjG;$r zmrJqy4i#kBsv+j+{}aq0e&INB)T5evJ4t_=JuU^r%4g@=P}&e}$3o;10a5Zefhb35 z^;hz$Ae?foN5A&K zZOU3qT70m`Y_tXLe&gcIGgCUmsovcG81Us74apu&mEc5mB|03*MP7T=E2NM z#t02wN6v%bz=^zf!JRN4GOeKX`S^dHsq5QE^?R}^>g8`L^)`u3GVxQcOE;3bBIU7R z?uPEv@d~cFunlg#svY8ji+^xf!p%!01uwI2vhNA45&7dBQ8{u7jKf3>x^CE{Z;8EO zsm**!^=(b%x7Z9V`j?RP1@c)f5+1Hq3u@^pp~{ zy*=k-_J=sKTzbCq)ff9FL?qD2BMr%^Bno+Da(v)?eeh<&{Qe?%fotn1#S+x!Bc>K0 z8UHZyFtu#r=kqVZPxHs+&Iyq=+(nr@dt3}z!ty9-VU5k=uL}|;zg^xNWRDM}> z1S(gPY^918>JD)jFK=~?J7r{#nP zA%4+V`UgooLmIilFcPekMWUHd!==r}>7J?0?T(A>dRE=yb3G88ADn;O)D`)6eT0no zdw#-6DQTqXo_)CJ**s8h_4R|3pUopaC=N;zA2mCCsE?|n&JZV6d`n*_{i}B4ay@H1 z0_L-xw79R_`>6A*cPl?P)k+Z=i=w{t*Fxl*A|FtS9?M~q6`W|YYMm%Y zkYM}Ul7Vev@*{nEA`<1XT#X4NeQF{S&>;1CuFTGfL`iAR4lM~isrSjvAnZ_7X1_U-T!;D~w z)|@egntG)W?ISZ!P?b^k=hCxr~>3q#Id(~k4Bo#3Ofr8lR;8sSnjJiQV==4jCOw`taSi&)D_JEuiF8cuoNoF zp^v)CM^>s5A<;Nm3~#XX#3Zh1(-TvCCyK+xC=SA#nOGrVwX_eJ469rOD)G93hU)lo zCZ~{=3gH5}?5Po5OHS%Y^4MDHp$nsoWg&#a#hBepOJOrDIC&SHCJyv-O{BIQ#x{?= z@w-Q5Y2AMaDViqL-z_Gz{^ca-=mMeTGs|VXxJ}RsS0lM_f=#_~l9DXHyY}W%_D?Ft zdJ(9gWOJksTdGlf)gxE+vlbC(dqNyvs^k6LY(?h zU3(!Bd|8rHNX^gpD%M`H*Lve;9&z@w`X)XzmUVyNgPHi+B<(AA;`H`M1ay>~kK8UN zk-wfBsdke3&UII!C$)hiC0^JrEmoy4Y0G*O0!d5ZCj|0oORL#{nYJ7+<`Wfj&6#@C z*#me>iBzz&NzFnUCAgANKpKug&>LSV<^PaaDJc_63!=in_|=ae(rgL}WMl*eRYb&e zk`#Xdp7Siq5;OpnboA-s!^z>n)i526lyf~+JOOBSvnF^cE*Fx_`W@_P+ghuGJ#8t@ zDSyZ{?WX)Cs&zA?`%(!h?&`=h$w`@GcIHlHF7JW-+3Ovg>?G`+g^<4uZjqqh1-A`A zwiowm6U{PToe3LMinPx|6?Pgsf~;rI5E#sGoJ8(PZf(2E!0EOO#- zQC??5Lq#{uWhzUjz*4O|kt2~Fe6h(du))I@|d7=2&i67?xd#Od3pwWi~s=T|h6YKMxPkVnN z8dV3QosSI9H+m>^;cPsVs^zDQ9Z z^^q@|{TLg>60o8p8|J2~gcY$eIBVgO_y5U)SC6|8`)xrXw zzXwm-D_J|&y~2xE4Nljx3s+^}CJmAly&<#X;Hi3s*TbYCgi;q-q03Msce5+#K-7)Y@B>t zZzdaYEnc}xETFfIDy;errO7PG+lZN83CVJV;cCtEtHg~Aeh?Ms~&m8r&0=wCM3;RmLr8(VE6B zX{}94T2eWlZY+$wiISaUW~pk_KyS5fhV2^0=57RbI!n)+XgHdRl*$#>DxyXvsXggj>^O zOIc9tPhv03xLDQjRnUO0)|RpICggF8g>Zy{SPif;et=a$9xvu&u_VB;%Z`r# zkI%F3@v$|joNkNQnp986#nx~|+%N8J=zEjHU$1cdJ@`?!ZhV10Ay8D8EsADzDhg0$ zSE0~3e(Hvw52Am=Ks8+R#zi|M{f5LRxyCa+Dbu>fl}wka!rmmaQ#T)!;Z+2bay@l* zP?*af0lL{$92xqifkM4xO$yIbK)_XS6(F+5=Y+fOGqd~MqwM0>k^gaK;y=~gjYbJd z@CuX-GdBr8D9J1En|PbFI4IGPFvapT*6w#esb^q>$oqOam|^wOXNZ2U7uD~cUmZ?lRx76v&eCs$e-O$y!4r}ypE2R(bRq+UB7N6 z-Krs)<9!o9KGv)3xH7#+RdpHAJAdX*oZNFVQ=7Ivs?v^YElSiGIF_ce??}aP@+&`z ztTSiroYzOy$>nv6AEk{vvvO}{CZR;7nZ)-1RYrejUJE_!gH#oV47=kOr$m3bl1;FK zG*BgQt=)|QsY)(^BiokfSET1hm+mx6c;LoIc@3<%DR>5IxjX#;Ro%w57FHUvSylsl zZ5w1+xs$K%qp+(~|8~`?AQjEGUOL8EnDk6Y@r7_)R@MMr(pF++fvxZ<_7)K?MYtw* z)^dMvAM|Lcwad=6e#!rvv%EU^M3DiihhSWDoE&I%`%& z<5!}LcumH>!(*nGuS-!+Z=6^$2M;^1fHLltgz{Lf#srcus+$J#Ea2Tuj7qcuD*J&m zVXPJDA>9DNFxSQ>tk-lH2vnmYIJtjmscV9^vXvng3f6o0+1L%3wkFmuAWmVSfoNdz zU+%{`*E@G!G9Rw0SqK4jtx2{${6ez|>3!?V&oK8P+ZmxEK}<_gLOXVoA83DgDAHV? zDga-xg?a7+4O)95o7C&5_Pi7tG`ie29MFF6l(>8DETf0u>w9l9Z~hcXeU7Y7QMWv#vSl|s>UB+`Ek%jP z=T6l7=Ep6ZCVlvJjnho+NO^y#jHg*YYlXI6d$JwXCyCjUM)yn7J?RHGdXVv0K3|&D zIcaNrX;e!krlpAHvdNcL-^D zocWyTM))%PO+0Gdx@+RB+mq|4&P+CTUSp?BH{ESdxy<@&;KWgVqnLk|vbO9Ec3@Md zO=|SSciOsj*u-gLH4>AZi0UR~dS=4UVng?iGTVu?HL-%fjrohDeojqVi!{^}HBd5- zF^95ZBxBxC$YwJ#(L&J>+1C&G-Iu_Ra~MQZc9~K7Ht&A#Fc5~ z@48T4w&O`<1yhG9xWSaML|hm?DiLAiMxN9E$@!Z*5%}(caO%d+S6@#1aApD|6F_#`k|f;aL#wSA}Q8!B5Uv zAogYw%p8AKaJHEs(i@$SSg!%jgZooaIIlI1dHm=^iOJU# z*U=lMpt+8b(db%aV~mE^Crk^{#ea^`e*8%soRn*~i`bb3O0_!fT`VMq&t#TZw7eo} zRX$d;=#8~0RwIA3#$sBKF7I=!_A+BNWyM8vcjQHm*rq0Uj?n(flIP^t|F|Qsl5 z1L>NhXwRjn+T%o;7O83ignTlYRbuKbHY*%`i^~zl24fz!NlPxWBdA+;; zYIh%*;$N%Cg|yQD@gf(-vJ85S3&cosHx#&fhZFzuaTb5O-+C7xhsP&>zd1NM`Z&D2 zH1gML^r?e){x?;E50(;%2^uQR!`vj0;OE;GwP#@!b7LI>kh%?C2up!d6!a0ahy2u1Od1cS zsX~7{_;7Nh+<}{e)8DeF=Jn3yi#M+ZZ}(sRk0JMj<|n`fH8nB6JAbER9=v$*a`5Je z4>Pthry8yBY4baLFnx61d7de^ha~CHRXTq-tht?i7u-6B4?(~OmY5h=4p#Yx`JL^j zUwmk>nS)5QxxF2vUwmk>8H1H*Rmdp6x9;@uXYZRkoliVz$nt?ERuol%&Ta8+aN7uI zbp25!=rjnL-|KgiVD#B}(I0djDJ;Z4@VwaJV{7zmcQpLG&`|LE!pe4p{J32b@PdDj z0AfRzassXnez|%7>GIvd+0lxChedQN>;yiz=$R21xW^w)hC152(DyjOl80wj>lGO# zT>)03XnZ*oL{6=&*4edcq{^NEP{8xi{`@68{oO?`H~NK-45*pt^{?P zjS;EL$D`q8!R~cbGPV{a7k|s!$V`8xC0s34kCNQ^R!|~-mWdKng;W&{(&Vf<4e>K8 z8d7_jN!p=HuTV4?&S8xP(>V}nV9W7w8EDdljG8nX^Mn?HrKx8nU27~LE zn6ee8p?+vd#?oZxB7?!J)W|454TucJ(_rv7Gb6X+JklRqlA@XRT*NTAqd9+K%1@SVp zKN&EP18ZH`?!X^AqX%#FIa*A4Tp769k0!;J^k(jW*%grK*i$c3)V<14oPLy$t!SQ1 zg0J3K*80ed_=xGG85D3v^UCh7u(_{y-uC-$j$9X}bp8;`*hpni(iwlLE2Fl;pjF}L z|L4(7o=+sbQ$Lbpa8tT}PU(&wr?+b+a7_$Iak!i@iHIefME_^XvN)VN+im z91d5EeSIB^UA_+Ge`e+fgFe2G0$hY?3H$8)ObF16E6vG13uda~^+L{&yPZ@#oKt|; z3|~{0s-tUVvQ(P70wzv5nOnl-3BqNWtYG=V2yk6yBli=os|0`cCEXBXdJ$n+TF#IB zDn_bgv7#a6uJf!XD=*JNf7Hppd8FTvMS=P7dubaTn%xaoV^*}$QJ5~IdDtmLq7%5o zsq0TVg|KMytu(K-vlgK%Zwo{_D{BvPN!XPzA3DWgRf1lsz2i*lb;`W^XT4i_tcEdd zGz|zBaaQx67F>U{<3I5WVE&WeVB$aOuvG*9E#a>7-||~9|C#6^@*k+u>hND0WbCfR zPf0Av#EGC5MN`LoEwEbBIBt(n(bk@#dy7?cY)Q>;(M=_vJHv0@Xc2pnntFckfAMC{ zpFhh|=q#Q2yR2@X-TC1(N`|E;GQHnqLZYj{WvhZMl-E(vo zWUd_Zw|2fwGVWNF-lgYvxfqS4;7|XWv1&INMz8N=x6nrnWP~o$hEj)nCunnLThXSI z0EW`=G7f(q&Gz*hbd~#CYIDl``GmQ)AnCdGyhKQKw1YMGNyP6{f1lcW5^U(0=ckkm zw&`8_l!lX~7}E=Z+eBKC;Xb8}@poq=rJK_!mg_kquVOwko)7!`RA(rbWxdIG=Bx|E zFbspRbG?%&Nr^DH%a~I3NnK3FDqeXfOw^w01LJ?0x0HgPZM-;TQLIidE=XaV_6p1T z`&jvGGQ@}%7cGTViJ7pzd|~=~&ezbL%QCY#$n2ZHm=s{D_zKD{{qz}=z0luBi}vS< zr5L-PW$UTz8KY>+2m;)D?|XT<9B~vXT96y;8RC+5FDLa3nnHK#bQ_s$m_B;CYa2#P zzs7%@gt?E+6Mc_GIIC5A`-9Jp*G^e|bbe*S$_lL)T0IMf17 z6QTM)Y?XuF$B%WDZmpYPESh-VW#);pv}VoV#1DGS-0w9jbef2OQXf3kTMgkyoBA34 zG#kLV4T8^I=gyzRo>;+2dKEYmKZ;fN$H;%1B-0GiZ}>AX@DO@aSA1(R8$GzQd$05v zn6KA=C4Sn=b*(&9HEUf!Q=+#ipd&6%goF*a#zFNj%Z=QYqob|qr3Kaz#G zAXWobShj@DYWN|%&z(>6u^X@KE2V_KCs}~e%8pS6j8I&1EK#Biq{d2(7#UcGDm!3)a&)=PBKJjCjGLuo1_J9*mlkV=l zJF&j}V^96498Dm;q92U2>u7)XjWmBa+3|&vt-z*B%gxwouamUe?75Np`6d1T-2dG; zNSsJgt-0{Twdf(Z)Mn^+8SeIAcmE9*Da-Qdm+~zj%|Me6^->X}KYJIHkMiA@=|cTiNZhE{_cH#UiwPK09c2~( zQsNQ-$rk0DTR9HIY3Ea7O+82T%@F3~%nMb>%NRX@2D zv{g@zcqdrrU)Z0YxxMP04lgecevv(+J`Ash>2`nJTz)z{6yGqWhT|ij=-C4L zS7z&Hu=9Lfk;_7e%C@H%NRNrS^v~yJm+FWqm_S2R5d?B5Z;Lq!ddWRbL{RZyxzN>p zCL}CXJ5fI;*Sc9o!&;hGBPsekFNcKPYA+6gdN*XYEZ_$DNXx>XmD(06^F1nN1R_ig zq-KNL;g^3fagu8jEaLOKcfn$o0M6u6l8|v12GjGIm)H)Nr*P*7r_Xiy(H-%vO^gEV zT=oU34L;KzQN%Zx)ecLorQXggi)C-h#I!g%xxDyr@Z0d{Mww|`Vhr82o=J?M+RHO7 zg_Y2ZVvO3ay~IH}Zqz+O_hFY`>*<48;vmsmz^8wYp<1gmofk!XKNU|AZiW6dJVm(u zc_U{JH!gpYo+8}Jd^658(Dgp{!zh2=pqmc2GA0mk>4~2kBPqyfRyGpqOLJ@v zE2{Ugro|&!{TST-A$)*kgMy^}uF&j4Niw0LSN1Cnz0QHXOnW&>ga-vQa40_=30v=xK}qQ zZK2TUNzt=is!j^9q!c1u=ig9ivktC*$x@1IqdmYPi;<)DAItFjRP;#IJw{ z+m-U@0HacV%y@*L5@`4cK|zi@LJPNs3XdA6sT4S7=caj~L)9%-JXzu8P%%?f64#nG znx?MbL&OMIm!i&c&3Mxf)8ze7A#Ok`kSa=RxkFT7_WHnhUKKtO73BuB09=1-O1W(| zJ`xqAjV?eOU(twTJW8stFZGtF3vWPTqdW4NpK(apWB8uAx|b9ONk-nOC;s8sm_0#6 zLy@-HHBvRXvfa0OQ(`&~bbDL*wbtj;P#iQH3b|ECrv>6IFke+%kjV(47S{S+bn8yHu0o|J2Az{-wjjGsa$WbBnpkGwIk`mY}U&Ji7APMy2BKe!L?`9kW*1?NjHfL zi;dl{LN6=E(yu?{%yID=T;*ynzJ5)|L|2I~Wu&kXVWYDO(n|tj6kdN)B&-XHYc6(& zOKj0XOye^NpHX(f)wMRVYjq%9n8hff3k@IphG86lM=&2yMYddPVbekRrc$8`ZS8vZ z&jKfyd0eAf&=tCT1BKAVwOLD;WyAYr$-(KWNlZl!HKjiur;OciY9TeYo1y&ep@qF}Uot=G!KE@mg7zdL69P zVVKfaDnOg){N@Tjsnprn`Bv%U`Mv0+_7W#46gPosO}KEDW+^vb8A_$e#`@2`tV=|x zASnhr*P1rA_~{1P3sLE^305%_ky2q&)D+j6_MxLj>o}=oa6f-KpciI*bU?334Ht2m zGjPc)(VR(ZJ(WR2FYlxxwh{L#)UlX_-n}qdqzMDY*sgajU;fyC`)2?3d()^TDqx#f zP2Oagy5Z+agQZ9w9|06S!nLN2j0a2Lw7s(^fRh1NzKx_hE?i;_RS4X~oTL?Ps%Oit zN{6zXg)|gvK8b%xNH5X;dfn7<{7V0wg!JD@NPNR#j)s@!*++fVQyN`%-U3?Fv?ChY zhNm5+4}AxxLq^OL6SK9+SlIVuiiz6VXe=!Fy5o*epfBE^pK-EF?U6?))K>?;+`RvE z`R?HChzob!xksFn$cWJCy05uWWJKt6jo8pAGU5>5x>|p-{ZV9fHRT3Ik=0d~8yQ7b zx8j!I0uaVKH9m?AHQ0%XZid(nNI`X1X z=+EQ8JR6K~t`ue9txvqdUS|B1Xw+D!TEpB3SgZ%|X;?7B+z61YNAFDu!`ujXYM}-`i90lp=MX{Y#e`SqEyZ@O^YT@)b^Cyud7|=I&0J*DTJ-9 z|vRs}iQgjF1HFbB#UQ9(G#txZJ z5Jpj6Wp33(yEsiaPpF|=O#49zoNbx&gr2xn;XI-Ds_q0W!cth-k8qyQYhs-d$a$It z%5|#aInk!AQA9pN*s;uxsd75-`Vut*3t?7QJ5jBT%SFxF;$dFYbgZXu0-z>yG3_Wt zGdv{|p!Rq!!cz39EL)>p;W1y$X;**Lv1UG)t?9$Swztt-=VvZ+_HbZRtp3HG0$GGoqUOSE@%jKIAi+kz{Gdd;=Hz%&>J?S&ylp{(k^y8jqXhb)u?Gf9=9e|2 zGf@T8+pRNEMb?~-45~_+Ypo5uVV8^zL+Z@5pX5b)MTBN*+?PRBL1%wVoMZq8i}?KR zU9gyqtENq1GJu^Q9Me!L;_g$;{zfwhv6Wls`8o}1k;0)i;?SUKwwZ)8X@VMBIOF?g zDy_^Wr%@H#oW2dJZkuZ@tea6;CytgAxEgEu^<3SOf=&GOLHs$XgmC=GnaHU^p%Xv2 zGe-(FC%DW1gK~q62%CQ}RpxdPJJHmgOp3@FFy2wM+X=3UvUU8DJQFKvi=t|-@yfkn zpBP=Xy(ymo#JB3~ShSnbXW#m9e6{5S`+5$h>YggNGvgcv`Z zcy5@<@n?)@)?Ux*lBr>sGfRSnO`aL4vKV=0m1$2)Gotc5(T)s5@iBhSh{2uJd1~)O zjUFmJgky22fPF8$d&V=xO8u($3-rFV*Hf<#*DV|TM5B{RbOYf!WRjCAJ4H9+qrxS{ z25_}})#ZOU!~8U!XBdx_NElpLTtXPvnl|$vYk06!csA1>+wo+nl-P_9w)SYtxfbi! zQpvNQFv;oPQc*Jw6-KXVGgP>Sze|N@Gw`0%@1^2poH2}E(?$bX`N2eBaLqI7@ap)( zRFo8*!?mW3BB|>iQ!(182yQ=_ikTw!xz?l({^fu0o2eM>N5_*~ElANzFAL{HQ;DMJ z2Cg-!t_Yh`O$BPB6qrt2b4V&&Y#LDmxcJyWRMm`a^uq1yhyl8K*!&($Dv=+ctA2GC zI}Vbv|5H!=!?7{Di-@Lnvs4fIu*%!wYB(@}%ZwXl8%u*;&AE}&e$;zD7Z@A!UF*SZ z$h&_xB-B$u+Q{^hRH)-1%q8uCJz={bTk_FkBl-(%Jroh?XDKOq(TamKCdi~qT4^kCVX<*Sq}`@& zgD$NgV~*{VY;;q(q&+J@&)KEodkxE3xZIg0XC(;?Vm1+EE5XJmxNLOeN^mLWN~CTZ zQkIg_Zz@`p|0X4QHfC$2?}axp$^4&c&c?8AR% zT63c+ZsgfxnpRQ)+NhOW=Yp$13ba<*0a0nQQAQR$8$CARE7{jaHOYIyMj;go}T|QFds9ttqKQP&FLaGXPuz-tdW0qj{VLDqIXs zG*Hu`aAl`J{%O8I8^ZRE}65PC+76)p(J1VR?G(7PAcUJ8L?WI<{E>z&J&Klb0g z*?;~1dWVgf;R5mhG;}=MuC0jk_ap){-OvA=>%rpM_)r z#D>h>(PwGsD^$G{RZpSnWvG9us$Gzo^bEBT$dxdU-TrhQgt5%ej)hJL!u#GIi<$5T z|5(h0O&Ipvx!*fbcTJph)YD^jT$A3LLa7oxj38g2JF#GjAFM#iG)^Xrn0kpkMiaO9 zw0eS1u|Mf$DNa=q64^QiBc|%26{?;IEvA^R2HHd;9UL8f6iSK_Hs*iDpf>E`>A}ed zM$o9H*|kw;wjdX1P|N(on|%%*`rOddyhASN7>!gL^m6_&7izk8vp}uQX6C}p(3TI~ zPzJw6u)31FVbo4P?haI)Wl$Vp+pKW{1a}s9cb5>{-QC?G1ZQxU;O_1Yi-n-UgS)#E z+{xj6zaw>i&D1kiwKcU>(|7mP^+hsxqfb*UQ7{XvS0TjPq4KKK(P;B$paF*1&Cor~ zV9+>hVu2*cj?4_}D?yYBAB-^;@O8fc4|Ii&Ht&=iVi-lklG<9TplhGWHnDJqwmz)u zKksxJEFod@T?M_3T?=#N;h{HC^f;>+JHvvvk?@H*`%FU-SB6?>+dsLXdHB6czfRIM%ZeN29ionZ z5YxSuT8F?B@XO%z_THkud}&ix8WA8;){gWm>sLh_b*3nx&eg}z&v^}m{S@VfMmig` zAnHfWQ~*Z>|4MHySk>`a8`v$t>svt z-%}+7omdSrcTu~IDi{jago9?~BW^Ye_EzVSNjaBb{aCoiS|KCoc|e@terEkeG9zxz zwS#)r06~}Ej>U70&}zD-gDFmot30*7lD)V7bl!WOav!N+Rf&TeMT9FQ)vk4#CuGjO zV@_>Tdle1L)-v6|puT_9G9ZzTEio8EU|K8(|4_@FnB>>n(q5%nZHR_a0#-)ft?mpa z4NHSi6|;x=*0PHB4cPC}Fe$sjs4)4?bw5A>-OC^xfG;TFryi^n+ha zmqP%Z^6Luq_>oAcI|E}ugFx1LPb-y}4lyaRD276Ir*gTk6SuechDq^rXqMYz*@3e0 zmq}7Fb29#BW10N$A;cQ!E$YwZsgU9uz4XSVagffz&Ze@!GQgIu`pm&ZJ!`~enMilm zshXf?`Oxz~;ldiPJ49q;_^*e=>LD1H1+VEvjoUxew?is;M+X(FZ_8W3{CT!Mh&&Co zif=Oy4m-KbS2Ej>>1PoS;t|gHL|8XV`wMeJxz_tRa=|zd ziQiC&ok@DZ1t;=BT-wuMsF~D&Y9CKR7Hb6WKURxMB>i{||EW6^()-3nQ)cCFDW-{o zh6~=tbg5|*pVHMy^-%)gvpK0%VmZK!P927{V#%%kz&4a5?khySMHN1?`nL*{{6yis zxSfVyQv&kuj90_&?E1XN#3%tA$L{k z&@2x?&Y_RI-HwDu?Xazoz1s2u9BANIwBy|{&a=^gs10siMS~BnwZTgBWnW?t?!7$H z&c5e<5v_|wmpSv7Sk1*a^n$HW7aY+^w&GVi9O8R_+yl)co!6$#qu4r6{`c}U>*%&^u+(P0{cGa-?ALjw_&{_^=KvnQTeku@VfY0J;@=yL8%Ar~ihroarSMiwa>9nCs zBlgiwTlNTwsB}*iA<*)bi;>A*m86|izj~^^Cv4D?;UdNFbG;Syd7zU9k`JSG>n+7u zP%|D{{Kr8}0a_SB?4F*mlA(p+wk<#^yC)2G((=g+x4H3^@8ed#ycGks8PVSfaLiUa zAehCh$Bp_6E3IxpafpX?CMK;+58HddE0NrW5J-rx<5nt{(7gUChf-l&tKDu%V>NZ! z8PN|^r|HZtG|4ck^s0QJ!mTA`DYz8>@0aOsr2Uw(#YWbogs%o=?ZelgE`ZYN!+uqq zM7PjO{-wtUm(g-}P5tyhm2Ptmu>*GthZ>&xNUDk~q#fQ#W25wsf7C1BKxN2N1JPU~z z8ZUIjf_r@T{DGU6ISU#2CwDv?-C|gonApD~5Y;MF@czZ1An;8z)hs*7Ky79GW~lAr z=thIIJvG4uL1IjD93Y_it|j~UU-vWHgM;E4W`X@uz&BiWUBidEG*ANkWj zmLhRpefTNatwy%btNH=!by|T2dup_Py8e@%z7DwCcWv#@9Y#H`9iHmg?XR)XS>9Aj z+F|Aj2f$^Uq2K!E^Yy9!#Pexm@Sfbk|Ex^@@0B7`h5uQp)AKi=$RR;asKbE%k;)Jp zdx^)R=C$tBecPc_-F@K8O{S>@O2ph>zM;G+dJ2Az=#D(Z5Ut@}ENFemoC2c`X{p6t z{Iq+S8_zkV5VP~=Xk{PB!6J+|mSxi3&e7R!ZgCT7jNLI#mw6oAO$}g7 z8(uZFb3#@;a}5Zzv4AS4l@mfV+1a+qk4@EDhUhP7Q9Ay`D3DJm30m~Hdld%?#-Pth zB=F_n^o66I7F~(pZNQNh+*o;xs>hQTC^6kOjraPIYjQn;tWqvYh)3yoWzjar-wL`a zDg8s0X^%6$N82_~@8a)V>+wD(E%W|#7xx%;PlxMuTX}N^$nBh!{wUtg*-GX!+pP0g z3X5Tb|Fw?$<2NJpfZGZ# z6;Ocg(aU~)upoP!89{{MV7TAjm9p~{BLaP3BS6(8GTQ(`Lcj=l=oZG|Fv{*Vz4&do zmFOI`p*)<+XepOb~aL|dsdJt|8?U7rt;_J2n8$CkIvozHalG~HcX zYN37s{U}kFk_{gQ$loDEbCA5$WP#x`$LZSe>huap&KX^}YzYvZJjhe^sY`W$3i|w#c?m%XZcVqXhIT42=TN%W`4f}la2y&$}Evl zmVgRgdu`CDz@U3f{=JD;Qs zUo*Pm@6GXoWkUKL8X37+LsQF%YG+$q1B_eBiB390h4HmEkBzeI)K} zbP@$Ua%sFE-x*zfueSY;DmfXwC=+HANJ4kS_oR&89(yB6x+t%9-w_fs4o&3gnP1Tl z4*EKytdTEMIA(L?x;4uHa*r43qo#|6&3UH!ME=BJM1~jl;6%hH=&i{0>Qlpd2^n>;G2NF*iyw{pi@rHH$2leT zogs0?W%Bv`v)Bj;NNNnoa?)@Su(HBooI>VBac-*p7n2UZHhM~Tqy~1;YI??UT))HG zWpwVW4ZBRxNVfI)*r%zliE8>q)SoG22_D3ypKQ#5!~x?kX~Ju7IhrEpb*9iSH$ot- z%~iod<6oT5|BX!OhLrr+t=6FV)i@kHZ@>Ihr~gX)MHN%&OGl&Ir`-5mFSCt$Ae*&HN2Qa+x^ z`!bI}d;IRBqvt{`4fwg0NhQzfYRn+v4>2IU?DzsV_h~KUbVLGwJIrvxk!TG#t&qas zF4begQvsaas>9-cRDZ#Xr3EKx$Z%g|BA1M!&$}1KGKy30^%+#>2API-ny64^W(G7N z_Y#AVaZ<9)ol&E5vojW8L_iUSy~x#QVM-Gj(MOft1eM}CToS1h2i(}gR!thu&TUm; za%ZQjhv4s-%C@Ftk-GqWTcoU~fqF+bi2-j0B}Ok=_?h-c3dgWjyYA zhp#%G&dT<%_1(}0>vM`ttA6_>m6LMPx5iH~KhJ}q0C9LKV zwF8tE7rHnWQf6ynq9D!?G^tM0)|eVCF=V*4y zLI781VHLjG-|4MCZO%e%p2BMHB)Nb*Gbciq@9dJT!Q zZPXrrwVY<_M@CQN#|O@YhuA6TDHTd=<{D1CtNZ$RS9D$N6cG9hAn&pAI zHlE`=P`xTaRe*Y|M%ac;n`$#2>Bs&%A*%p}`dQMZ4z?zGN!2CnP(1p;7y;HrYTRqI zP;yxYEiand>&^6!h$$MSmA5x~6Mjyj4!yAV6B|BYxZG0uRqOSD(%+K1jC@6!r*NF& zQHCF??a(aWx_-1gr-7yt1IS@}D!l3j^aTLHE@&dbGom}&_#?sL>)URgMfR55GvS*% z9}7;C%IWdaCXIL4K@&8@0&7~#e@t<_ANu|#TH+l!8GV4XUmO12PrRQ#EDHFJznVwW zzI=DT7jLTaWK@tg1(*Na_HoFg8q&pM-j(tl?`jw@(=F&euk5jk9zNB;d+g-rpC8cF z)3x-Ul7#rPu1t8F%bGhA+^tOVR}pe!;xf|a(J81bS?;;cG@S}FqxY-y8wf*)ZO+F>vs zfnj0k47mq^x+!vj7@f!_mahh5h$`naJ{+fTv&GH~Fo0FdUm-`dbQo^EtN5jdYlg@(Jt$X49bjb9URMduc`B z5H%SGV6&ylG@*nAc!?T!;O=aLyNWg}_zAX|_6P6*&WhiQ~JdUF&y zYHQV=Ick!90<_+_A+xj)`{w)2*JP@@J$SEJNUR!O6zE5GlX|Rn;*l83NzO0L@K1a{ zg(3;YXEOFz!*JuO6VGeIX~^0z7w5C@9eywj+DUJ$``C+Ri8(|#qhCzkHN*-joY7K5`C5Ao&_F(dKF4j(YoN17n~6QA+WgWMr?rgAiN-EaEx{ z>OL2aq>_pb(DLMJ>4EX^H)2Vd2gKPOg+w*tOAKIw_AMMe5%L z4|SnD07%Hyq zbmAcVRRq;FXb9D_jfdJbA8H%ev~YKk2I#^O757P78(Y05#SR6-EDWB~|0)}#FHk(p1r+BE6oxa()jk(%SlQ0T zcz}ai@R|FDH|%Hc@3ZSr`)uP6E{5HLmiJWj`Tyi>D9ZZ4A#lF+UO;5XBWN|fe`xH$ zhsa)vWw(xcPWjM%3Q?yqiK=*Eqxo(CP~rlAdT2GRdC!V1RI5w1H|~Rz{xD*aU|}*2 zN`>MwU&+Wo8EcFXr@Bc;LP%s@tAdky!sp#Bm(=BAF1Abzz@;q-0!WKlshi8krWh|b zk%yne=v==Okwp=CP}+HQv0;)|8`1*U-DPx=bVd$?&Wk!e^qxZ$KekWiFrFJ(EK4BL z@=}dy)1m}>;lRxEwB>1odX!I{)UTc}?D{|ywjo2WePTZylH*s-{*+4WGu!0h=Q~ar zD*{ZD*UtzwU9aKI#QNb;SknU~tSes=EoM9X@QI^58kX)(%s)2^$_Bq4pstKDNmf2zuO~XqIF|IsMgLWz z;THKdg{93txQDi|2L+%TU3#oCuXLmMtjQjS-)nLljFpDQfIlsN*k}r{`5^gfvj1#{ zl$47!GjHLi6P#Lk>kl7uth_}IV6C0WxxseES$1%EHB%*JSNJBSrO4$+ z&87irxF%0+g18Mr$SJ^QCr8Py!pgr~SDCHGa;1lS9=+xmzIQ{D=S4++lc6;dT+q0K zT7zkg>p!-sm>n&VS!(XktjPw{+2fyV2GV7RID@y^H7SQOQ{@j8+Z_q?{SVJv99n{03w1$gc;(o@R$$|Y$7z0wrV zl>f`+Cyj@(LBKKNaDeJa1-q9qX6S@yz7nIfRwDUY!BeXI#F&~`&r8u>Ub5l!loh|p zBcxLPKzEFNy#JV}w`6d_d3n@rXNO&VnhidU%}1(y)V#KZkwU2J;{jdik$=AZiHx0H ziMp@_3bTymP zIzN^CYr}=B+>5e_R&E(weja$%%?&en?|aoc}ZDTx$|MyGtyR+XUD2l zYel9w01dXPgN@j&(vmYmX*Z2PgCjVyAq;6*pQ#d0lHK3k$_!!usa%SQahZ?cAFML- z3<38#Usij8^A;w0{8YUOFZ%obF>mJzHr!JHo64wwh--Gbmup-p{7(69O8-!SiCa!b z3AQam2bJXtU%L*yz)B^oYtk#!^8LKgFj^5--%fwR+lDbQ<4M~nj;G)Ep5-@OLmM|n z5#NEB1}8@jPX(e5Yo5Ijr&3W9K8>r0&BCfS$3vz{hx0sp`~muV>dMyS*dJ^Hf?6OAySSj;yxqq$zY1nDy2kUJ#2Qw`E7=X<0d~2u}XP zV|}t2&f69S%E!`WhPjRCJBV7F+KgL3Z17iQK&2o_y>ns0Ds&pP@YAYVUAB&UkJIh* zT%{s)W37XGBO6Cjlu57(1FKEa>GP`o!#H{+#yAjEZ!uVS#SStoT7oO?I3?>CrYsZI=JeVz?3TV9rC| z$uc&)Q;Fn*OSAOGHLDmZ|R=q!qrnAeg`fM7& z9A@P$Mv{-X3^XEv8-v1}|4yP3^YX-nxp&N{RRD2Fw)m;>>P6`v zV;2*}cgu^oFJt5(*K8+4K|yJq(B{V`25#^@7=A;1f@?2d5$r$SRweU?zeY$6xh@+I zNU!$CK&i4}X!P|{D`!k{Wam`#<16@Yt`5IO3fPo}jXU`1e{+GySUCb=Co+uIR;M1Q z!+Q)>R9I*V%0vxi59q|Qz8~AW4{mQWRDMR06e|pG*(jmJ)4AizFl1%?RfrOg2Eh#4?H2c z12r-pb1$YHe5yA0iT#LT57W+HMnB_qNs5wMr(=hp`eSKfA0q#N_%vz;OBz*zN?E&P zz7xAcYQ7rxtP^uo@@a-hGflM-ukJYBlhr-%=4bi6xS7r>odN^N{$KbNV{MhCW+RdZGG}bX5uXYH&zs2rbNRvj2d(rc!~96 zptJmmu+kuG_Orb_br8?`vU?;OpMdt@-y3fyNtdSyq_Xt}sc&^(`bt9G4?MORl3>LZ z*zr{>i<~Uh+>ULly?YaiSgt!s3?S>sYjcm&dH=1_c!c#uKy41npN+y{pA*j~DfgAk z11lajX2ay#3L$c&LWE0*J3ot|cP+^Y7BO2m`u#-6AGy!v8`&aJM*fVw)?B9+*PM6? zs{!7lU(B~rximR}wPq>wMSQ)gL@I7+c&$Lni{chlouKhMkDVZiNW=`|5g;E1xAcAu z{;{PJ4?$73UedIC7&3V3V29yJn36E&>~Puq@fe=|E7BW_DZ)p5uRY2AI;pT(`BJR) zo};wZtoTht2AK z%u#k58iTu>)3&yRWL8&La!j3m_IHKF{hvrx0@UNl9Rz3s&fNq5%&(2EAeAcjZ!#Vx zV+BnN>eo4B#TvQXvnfiN;xdc`iUbHbMqt&Y%t}kRjSKpPLg-vY-ml?GpeoS+hRJ{X zCT9EuD`A;^brMft3y7i7H2JsF72qANWc|s6S@;P*X7twk2_sPcb}5FU0_SID_GG8R zR3wpC!zq$iJHJ`dU;m;RsUIwuM?XjM|1QKqpsgFk(t*%+wOjfrhw!}#i_-c!Fk?&! z9nIu1b~g#Icb(%+1un&XI+;8gnn`wcbihh%EXei2^Du1k3c%U)>AVw9q+wJ;sF1h9 zDa!paY}bvILKweHZ1}!d%gkO;@zK|}Ww$S7sG%9DN~-7Hj+DSpw{ACFm_-4D-d}Bw z>2KScK`9v54RFu{_Saw5^_ubSvVqiX((5nIy1~=p;GwIpa5IzA}j5q$Oke&^a zKw(UpMU{U?_&`=?gsrx|t&8Ki8-O8Fb#?Th}UU*GA-4&8X zHI&B#ayz&8`*>B!bc)f}^Kh^y&N?R;4*4&veNcMpIRL1unUGp8+kPQq!{{}XjeY4$Q1v=q&+o1x|YH!+oaF&u=h zrBZCsRqKVg@?f0{)xgEMW(P*(`xwgOsGY5%I4>%!D7RL z85g6pQA4JgPK!o8Vlm9wkh)czg>PUxbH@*&fk)~D$|nN6UGQgJ3I58Vwyk|y@f^Y8 zTv?V&jMassz)0WC%vv?a5@ngrY`g*+!n^-|;g?q9k zKwf2tk`eYocTU){*>*yhGS<2JzM)b#^+oYbGvkQ7lV<7aQ#17*>VFW9f7YXJ>&{o=_2o633;H9A66ZL z3(~$t5W~BQUoL(yX1_ZHJH=sP?IhJ=GK${eTJ1?1Qu0<-y%nzn`_6uJMKhA&#MV;-LpL#F6tqGec2_r zjpC|p>FsR9s81YX^wj4<{9;b7RhgeG`X$_*zXP%Sk@q%a?0f`M&8i?ye)5M>MBaV+ zkD^43Tmdaq!|gL7NF`DPawRS@B~L26SeTnf4tM#)R&hC5}v?)w1}5~RoEw+VBYBK-y6!~RlLKnT%o@ip>6C50gXZY~!yfcPYl3mHNho&XL) zSVN~UFic-K<#RWd89lzYf^urw5x{EiR+PJyoZ*e>eMO!v@x;z0Rvl)Eo=+gQFUHjo z*kg}ahb8Zk4VzqFEz4z>+e`bmI(|Y?@y~4eIr)+}7R!<)^Xrw}l}_W3A_Sgp?$&_VDEvYq@ymnjVLiJarQm>hM#=;6q4B}9(2o8%mFl{^tw z-m^$I*1Tjl0dWry*+9`^d_zwp{ZhR8n(h6UIkx-BD8p=*p;x#<7543l?vv7;dq| z)R9^HC=$%;@EbeEQGMx;B9%` z84m2xNp=2A=HOWEx{yKbH%t%KYK;Z>S+(Y-Wr=;eLK_FSB65WeLePD`^wGKy!X>by zGxC8UfizzSqOkf@@oaMCFyNaU$1`GJc-`R>FjGYzTIJOS)Z|$4S5&jl5LAbpeea)crB!AJ(2wSr6%QAT7^RC7F06)~A~?uZ!ag0E$93iGJs;?&&(nG=Dpg+}>D*aIYPyL|Tf-}TD|j$v zX(#ApNeV0TcGTHTE9s_Xv#|{4tpL-FEy*UfSc&KSUk*bET6>$7lHbpEvS;)z zz}s)8^gls-ZMokL=lmn%DYnTdp#l&{x`7Ap49IQq-Z?kX0>0o1XPJ55tf4zhTYC6e zO_dnabK1ec^{36uFH*{$!H_C@Ht%+ILu43LOn+;>GvN3J>;Kpw))G+8aN8e1bv%%JxTk5xzPNaTnrc~``bHa|VV$?ESOaES zaG~5kqwl?2>JJ{tY(pDZMV9T&O(I7kL$7a4@1&SkVCNy+*cfZbp6Qd183)c)*Mm8V z3GPVIj19Mg~=;_`l=h;xL80*g;uZTARy+#D`SWu;ZIYZ3GK{}h4! zrhi&IDONjWp1vW82{@?*jya`_*Hap19O#^pdGtaxJe@C29`H-RWLkNj6;h^VnAD=m zN>yfM`zsrB<5G~ASEJ@f6QR^Tk4Dn|2+1yaG?QZ1SM*Tah5z zokrKbTDScTElljr2Yr~9hs3X0=PF&_CJk6KV2qMB((r1jOwGK zY|ptvC{*H3Yy0F;g-Wn0_TUCCN+XH{$HI~}Zy2Cj73iyO1Pd38$67Ah~2?H|cU z#+&TIF-G9eF}3WjsXdeHOEGbKr7uHl2@Rka96gsQ?wg`T!i>UgXn#Wy0F|2;MTbdr zn<`@G1QT#?nh5PIR)h!TxBvjHi^WPQ-P{DwyIl= z1j+tSx{`?6#sk$TrUjXY>Cl;MS#*QDu3D^6PZjuo1v-+aTVFx@fJn z;Uo4PH>K{cLKHhhGt#E`rZ1Rx_0!6;qnL^4K_@b90BFSKL{lwcc3zVsa>DwTC)e*5 z@+-Qv>|N<3=A#pr>lR5AYtj{iqtP3F9`E&F$36`z>`JG|xK<|n&44(^hNx~OCcx}a zK87--KFQIULxfj--g_OirdS`Tj@?7Wv(&2U56uJqt|Dlm7ol;bp>sMgPgfc6Eqpqd zwxTV)@RPlh%aae+i$ZCav;BxdnA~aGHFbZ(iFuJlF3DunIZ*Dt%GGTkhqyf{(k-oI&$*yM z){)%c#_|Rc-r2z)8@BbqpTp)O1x54~I{{g0Y-&r!?3n=LgHX@(ph=id0O?%Q5_k~> z{fz@6zrjhD`er)I$Mnu6u`8rvs_etAnC}B$O#a0ANvJny2b5snO1ru>29)(~P2#g0 z1bu=OOWacIUP`*OZ`jfhPM2u(wPGCm{B|9uF1|OwF1;OE%~knNu5s0*W6Y{oUYjq} z@{_*v=|Dq-T>|3M-~y$EruVj!uJ>SQIL4~2Fq`97`jR%U&+t{r4R7fYJ_cov@f|p7 zostTj7Q2yqI4Bkqj?cX=XaKPV)PZOV>uq7&m*mR~5%iB1PRzQ(T8rgDmm29jBqcNS z>XtR-QGFkBbi9dQEjVf<>E|6#<%k|1qQAm)s7-PzTA7wehNNO?f4j1Zx@auC2KXD( zKl6SG465oBKM@PJZ-@&3a?$~HN?x6{E~X?O;)3hqwyHGqDKxW~6EK7-sxU_#$-sQj zO!v7hHQ7LlM5yakZxlAhwKl0ikRmWRw)S*#{6`<_{zH9thp|FKr zAwjD*a4+gAmFhbMFy9=^P?uvktq%JC@qZ|I)F=Qtf1qNPUFb8X?1%oNe0#5cxl>~2 zFB4jMqugEUJP~>64Ef@*3*X?36?eZUF#JCvXDq^o+zl{#KSz1hy*GTn@seP?^1DSV zBKI{M>h^ykOo@0;FW)U@C1k3W3ak&y0Gy46f*h!q?|(j0OeRGE9Fv&l8cGq`{vu)@ zp@_{6LC|)#d}%1Rsm*f6;V<@cEPqo;uIv5u=j1v{DZj*|iW_%Z`Qa-u&dLOu@kPB( zRKz!+gXNbvq<;q-32eogWg&#HYrlA}Yfw8HU!O|`?KwR&#CAq3T$V#MhO5wPcI>yT zpuayKew!X31$KQjvhiwrTs-V~v7bY{GOupo{6ejh)MS%M?}FN0!RlIpU{efD&AvSt zJvkqNGGNxXPhy*53jRwkbj2lQIzLRu!9WiW&=hoX=ey7e^XA~A^g<1Vi3w}wNQBk? zb$I!F)!5FiETW&mjay-kxG3UDVxb1UrU}Ly2vroNBCBx@p3#{;t)A1-GB4!?P0WVhRGRh}xQ*uN9+0Xavv#`iYyyQ13 zK!66l;iCdgaUE=SFVg`#WYoc$w+B3V=9a>NJ%2hNpa_e%_T4aI=;swJCBua05jaqJ zZYaS@cr6b|a36%_F=SafK4PQm&wrOto3g_{^qy{uvdZ}YGQb7v{9pU$PMj5)0Dr(r z-Dm7SiTNuGdW|jRI2eNEpU#2aG`QBu$-1yKY?htk6?o+)E(pOCLyRw&uF3+VBoSs# z5B_2W;(JT5%F`>C{BE4+0*t;K;-t_~(&S&=9mQabLb6h;NMxshh*kFQ3SoeL%irvX32#^`GXAvJ*gF zjkMn!wADLqH?D#Vf~so`QdEwMu7 zk7RVE^Nr5!ZqXR2%?=mjmIN!xMxiyn08E(5iS(|ymuyUOu1>B>a{1v#_!50Pq~s zRelvHH>NU06^P=+xMP!)(|?+&WiH${jS`)m&X7@~Q>$?@J%?s5pzn}TkF7WeEMMXD7qFX*~1xI|>qyjNTfVGg## z`7EgEp3=Z57OBq0B%?{4-WjuQ1$2znf6wSX7W7x|a`MP(P#)RI+2#IlL0#4xnKfPp zDq-4fo`t|K%&T-Rh06Sltf}SM$E)58@}-~E#7SJCKh8(XFd5^f#loMLW|uxiNocI` zXX5@&B_C_}?t<#y%&*)g9~L-^JF?w_W7>WF=Goc#56WOUs$!r?)C-$=6d%524z1uzB@m2I~NL`D(T@WvI zMpxV`wn@qk7`m$dr=JBSJOpB1%^A7Rgf*j>h_v0=xcGq}?!oca`8cJg1(VG<R>_5gV8x zhbv9P>D)jg$*dWy+HV9VMTaS;tLe)ju>X{~9-e3aJLy8@lr5`E&GsH=Q4@WD3FiNN zXJ_7ruvB&$T=a5Z5@mEwpg9M)w)N_G|DAO{Ztgvc4Iv-}N(B!wKo$BvK@2 z&O55rPK)mscdDpe$PUONkv6S#t^B9!UUnAcih!reA<^;@JWC|E$907F=*=-d)N<_( zp^#5oTVV}_`Q^`D!%Mu6G$$5o%Wp9fW=ZhJWCMF7yDK`imh}?uKct5ufzF2&W1~lf z#aut2w~b_EUf#I^xoX1WSd6vva!`c4Q-Ed%cg@G-@^QtZPT`aqADE*-)>b(?QrHmY=Od2^bjDHL z--7Q`;D9MIM)Q>B6`8pw4k^{KRJZpioG~j|UI2FV3@(q+Fp#_r8xEd|HKAASH%kWK zw`|`qX!kls6aP|{t_Q%I?w&8^|8mT1GYU5C6xs0aX4`(t6!Wa(ebF*{t(15@omm^6 zX~2$FuGS{U|5m|_&IEd?>aoUO4kdu*{$3h+!nGvWWy{lk6 z)#|DT#>@I&bgITbI8c5CBE7NN{Hl+qZ**)LYvW%%dsYI=ZC!sHCZ0zozgwWNC7fzm zOUck|ccX0yf)DqhHO=(>J2cdzgAioQRWT)lb{9M;)s0@%2fAFdHU2f)@kKhH;5Yle zL01WC2#c-|6rS-N)|TeZ;P=VZ-(jOwj(Fa^&%roX5^~x$vF&EoPz^!2ZX=^YC6+9@ zKps0Ok6R)PbypIl8j6Y{1~$M))fA#3nU6m6yM8xx;F*jS5vls!SoQbY+r2I0%Zv8( zMEQ@G@(x*L?Q)E)=P%Pp_7(V**NL-qsxaJp*mo*i+1c4^mebUgwn;fjH8-*tijLD< zCq<(IUcN;k(QbF_G5Tw*f|B#!U29qpygn~l?6l);lT#6j@T^ZI5@-PZ87^(2P0ay` zJvP+JP?}bTt>oULXy2wjsV*(lfc$%(lSZ!KgRr+EUczY54D5p2 zok})TZ#?1>DbqXT+z=4YS*W;_V8RjNb1>AmQ*k|$TPPSLy&wtU^47jChPxiys0Y$4 z>Sl}J+!ii~q&6>0MCSsS9g0a~Zn84=qaLETu8l4nk}}RUq1b!XYcb4$jJpTi-8A2b z%>6FucK1Y)g-KY7PAK`j@HLo5J_=MQIXW&HlGD(?s1M;H>wY`Zm3>Ot(OHpL-sBpi z4bHYQXLcGb%x*L$DtTNur@-UQav0E%j5PXD5QpK%7!#W82~`6y&~1aXPc&Mbk!0Lc zD~wWF0Z|`Koun{oUk24}3pG`k_}1_8rK%rH?tU5t<-x4%XF`p>kro`Y5V)Rl_Yg_< zzjo7q8foXM53T5+vaTDIC9U4{TqU z!;pkQd#2!xCNh9|BSbI^iT+AI=5H-Vob^;?@EC_2Sg$~5MSNtFGny8%ii0Ih33lns)>TxMv=ByANSz&UzYQ8!^XHli69^=qVE@M7GAr{{>I{U=0~CB zv$K~~uwfEuU9fA)UrJUkMUgxv{RkOT!&luHKbWg%T^@|&alJn(#gW zu@L6HwPfFNB7V9QR6F=zv{bq%xu2B>)Aa2e@^$?Kn16*7i+2+WB_eQt#dTo!7D2BA zaehs+XMg$&tzJU4s0*S^BgsGgUjVW|O}`ys_8l$9A4-XJl7Dzb>O0LkMFUjXB%4zd zb&^q&JvaK`N3pI@x=zkv;$!ueyP6D8b(&mjZ9-C`3nF1wS0m0><33j}N#f&6FSe;v zMlWu{4$u{rtUSyquK%_a)+?94 zX-=kyZGlCJLKmD`d)*0Gbzw`mIPU&Y{~q%d3eC}fx1u1V9>7?(++_)0xR5OxhxY}(7<3t zD=jy!&VTgwV4;!UqhLC9XXB`MnEXNBSEY8-214go!^ zPXh&770vDg><3nHO^#ip#9m0o&;ZonC#Z;hjDch`PdBzf>hcI<-DJ&w97=Pt~^!X%oQBeX6h*g@CY|I@)J!>})02 zbI}tGRTm+<*pQP1Jky$1GCjKs118_yN^0wOK`{Q|#;yb0l*i^ewqF-5R(X4}aFJnY!WUgQx+o25#K*1iTu!`A<_C{;MB9 zoCQKEceJ<^yQH(y7DZuEWECAS6HvJQ4@uR1^4NFn??X zJg6}K{W!ZHym(=ad|-lJ_^fj+LH8x-{{Hn&*SX%g-l>)*NTmXID5^`}3rqU?{Pb<$ zeHm_ygov|6a&}R0`-eA*m$}+$;(wweUjdll)$m2sgG5o+d29Mme$1xu;5JGPA0eoB zjMqY(pIGwF3&qFjA$F4!jUVS;l>YgPte1;yPWLquIjFRZ$jL`5uXy$GVgZx%8q@KD zDyiP_uD)Ax#tI3KRD*jjAr4t3ib2OYFdX#@HfaoZV*+tAEol4XA*;HqPJa+P3ciN_ z0Uly@eih|tM3kIKNZ2*4UNCakQ{Ko%50C7XAP?_lZ~u<(@W}29lcNatP%2y4c2QFf zx3-p&Ihlm{=`~9#_kYv4|D)2lvGKS6rg7)fxK(o8<`cQw&pIask+&-Ad;?i0BnvFv zEGb)iu|M^CAA*rPIYNjz^ndu<4Ww0*#C}_e_q1ehrZqv4e=Cf(u{)dHzeZ%6B88@k$c2y5uDJgDpRm>_~HEGjG5*rl)T+GJiZRecQzFX>Uo5 zK~nZVnM}NUcXANkFQ($xG;js%^1;)-Ve7cFcMkbx!R3fqz4PTRY1uX+F6ugo4P9IE zqafF{-9X_bE!ms<+LDF7er^5eZv}o}%=WZ>CsV=M*uBr59vvA6VZv1Bag3xQwJq%d zyUZHLrDcUPt!Wh`6@RCjil8PA*Gl;7aodVRQ%~9ZyZsje66O)Ru~cz8-246A7Xwb* zR+%3p+?;4Ppc(A)#>FLR?26QJ5#$Rpn$uWs2t5a!D@%C;UI0BM8)Hsjqu}+tfY1}m z9xg)pPKUH6u)wT@`!c@hj8>pBtA6>--Yodam&e;gHK=~=)_*s-iK>elvVA>)wx@C? zy80oo0cEWbm5IGc>CLmeW3;g(?pBT+;D4?3m5w%cLm`a-{3L#Q(*Qq#8m{VGj77+6w6b9Z^_U4OlfZ>D%gYvK zT62?uC|W9ZQQC8tQ`jYG+X`~t`$fy(X4)^?w7i;W&$SY^EsxVsT+-N))(A}%Gq-_M zUR=gDcCWW4V|#mQDrz_xh~wisx(y@%{olyJ{%`*E6MxOW-h$j~rZuhNO1Xp6FIC23x)eJgv8d2OfBIZ?lpdp4_{s0vajKw6FxVh9*hX-OGgmc?)RD zVkV{nntudU6?48srr0n>a*#_}B~tSjqae|O{LG3LQ{90COA228|J_|(QyWRLeZRk= z!~4Q`ghmnwB;S`2AlvNn;S0>p?u2hR8qt7eghWWf9%jS;{nkgfR3&A1XI5pk;IbPr z7-ZL}?y8enS(zt`syh~G;2JHdYzB#y6ujgal7AGo^e$#Vf&%@Qu+IT>UvjC)%7$O1 z!qS)~5)xe8QWVR^gm`ygOjchsQ#8y7zL!PwGc<8nPg$riFZdtfirlKti7tLU|Y?i}ltqit(2-nnatdS%;53Csz$w5LJc#8DFMsan+x>8GAH~xox=!Zbl4Kk;qj-E1?Th^| z7(LB~U&{i!Sm0!XWU!n{bH_Y-RE9eivCmlrjTlw^fko_O+o*_lI1&5UJ~ZN8PQ)IW zc6h{XPQ*?Yk&1Ya6S0S}#3SD4L`*i0OlJ$YdMK=m1(*I*bhd!Yf3Rl@bWS4{&3{YF z(&16KtFev?l8?4KHlh36B+%6*e|NdnvJ z+W>#li-61!h)ePZ7MRBwAx)0}_aJ9XgI2l2G^T6J%1#h;OWeU?^zh^h-W@JS5Q}jG z@hEz=%i6p1P`Ac{^o~xUjbEG7_aF+0OWa?a?FIIjON&MBth;EIBz(&2pkX_;PFz)%^i935`Uj~N?ti? zlJlA5s^Tqog0qQo!82ue!}&xZS2LbCxmPouLW@>&dO0l@KxM+6a57Ng!nV_uB-#LS zop2rxe!~$nl+>m(X2iDl;IyF7dk;MX@iNd}!nppRcU!+LV1JuVgcmZnPX>R?o*tNRySn+gxId-1mw%6YHjk%s=|IV% z)aVlvaJtn&K5((Tm(P4YnM9*WDRp3%cGV{YI7z0A;JN7?PJF=_XL)T2ysBCHs%{qV zX*BtkOb78SiQ>`YeSDp;ZERQ5l!yItZGSvHJ_f?>e5A<1e${R__dBh2KWA@WF@;!N zjaDA+_dA_#d#BU>SAP!f_e{85Emt1y51rlS&i+p4*Bsm*m~hjK7nkBO-t;gHNHZCX zM>aSK2X$oQmaBskYYNw>3V4i-sK+9HV6z$51qOZ{sYTIm?YJbhnc4KF|wTFzxBf#X2w7=cx`sJvtj1;1|d{aPdZMSxi2Zm56i*x8C z$erz`k1`eq$inP78b)x77h-g1$=*9Uy69hCemOWlDBKT%E3j&q4ys!2_z!z0Ctu!Q z^#A9V{@LNb3#Y-L!^Qpd`=`C*6UJu``h47=&w8hQMt{tN6g+?E7srQ~HR6@b$NjuN zeLO#7ec%|2<&FBP_uGqEykyvv!*7(7Be=Zn>Gc+8;Bkd{8>f)Im z_PHJ;-TL7`GOkgK@naeaG+6M{a7e?J>t}bnwT}dYF*`ioB%JP-C(WBJ2f&+_ABqR_ z8v&z!IDc8lD08*fCJ9%AFc-_!K$i+tbAhB70vMa#LuIgtN0aK#CU8#R>Y2<;Jz{7YE~5o@P*4&qVYXn$3badTm7doNiwFS%13((YlDZfH3U45@Xldn}rV%NaNHq zlPx%};=7rc$TWGFd`-3*1#u~wCjuu40&~fY4-tbCAWsLe*l>OxdGpc6#8Bz#<{Qo~ za~9PTX1~E)a}=&odMuvCedE zWWJ_ekh5qwR>^IY70H-DMK?m0Aw8H}=da2Iqnk!FU6b|so?dCxT4imE_VD&mOr0;V9p3Oaj(*nb69%9s~ zns^}GN1pgzcq4&u%lI(w1RH(NJdwbWK)69X`ZR+}P$xpd@GsL)M3%kr=>JYcMq%3A z_tNHjDPC8ow4tz9sB14Jy%r4lS}2s7`&y(I%l2Y0bjmc8Q#GO;dI}j|f`8ks2Z@V^ z4>Q4i+0m5_)_OyRJZbo=ywr%#w>p=( zLv)!9+aoWeg03=(-%MR!IoD~tC$f%TZ^Yg5sJ^nYB2)+hpr2FCYh zgTS>q5j=SGVh0(#41Ah5zPbX8dGG-QdA|&xFaXW$u|~2aNO~K|O(Yh^a6Ft3b+Xx3*T!$PYDUh!u|8z({%rV{Oz&VTDkW7s6%sIY zWRUUmM&=q6Wc{j`7=JD*#WJy23nv0Z2r7mvNna`z!zHDp9hSSj)*rID7gv78HzTrf zVcUfy%fK}#*2^!>z@Rx{a0zNj3dVe*vz|^9@fQns91#t%Z-o3x^RJRW9}~I!vJIy< zn=boO3tHH@u`HBU@!cO(3f6z*HHrTG=QrXf+MgF6*1Zv!UVkg0D@C;OB|+9yP#r|M zoJmawMWIjWcq7|nyt48&R25x=pz6R?Hls8|0(~%xJ}~9#H{r@z+N|VB8^WrK3)2tD zR+7eryr)bjj7>%}_r*zPvm>`|#!casTA# z%W41eviG6?<^B1^Y43_@DkKLsR0B>Q(Xg;viWJ`PZhyn+Bj6SGIncrlpoodwpOQ(E zOz~h=Pn*I0Q>H2}gb=twQzVP9G36RsU}HndHMIB#)0ialV2Q@$yB4K^7cX(F!hq0p z_*DivQ|`PSj^j~wGCV%hChDkn)nB%3)R=aJ`&RB;dkJQ_!p;TVXtILd0PVwp4&QJi zc5rea+JBCGoJ!h~j`J7QA<5VRN6B2AUuR#^YgXeo;vA=iexd~rbL|zHHrLC#fPo_; zW!Pc$-$&tGMZDEZ-p?KfyX~ubiJ?^|uQ63D$zk8`yQwqAO$bmUtK4@(H*P-dN+OvKwHT zs@~adV#Sp`t1s{)ZL;SRzE#oxv-@5`D}M~&nm5h?4KE*(%yi~*8|kg?3UEz_1EyjJ_x42=B9-mU^{A>NWqRu(@IX^6 z2}yuMld{ERpGfhdWg^FAv$eC^-rMi7iNKrdOl8z0>fynsj{JSG^BQuz$N1Phfn*_MqYW#-hp=)PuIVP%P0m z*a}tP>q;jEUguwZa9tL98MQ1-Y>e&?g#d1Fu>oAweqn$U*9*2js2sRO&3{YeX+2s1 z=o}UhV8A8xv_35WbPkgU8kr^dMa^6Q_~ffla2_(cptNI(bQyJA;6 zxJs_#J8N|an+hz7w9jMNVt=45e)u9cr=k*C0|Hg?yC>qI2(!7rav~^lfo(a{RQfQ!|ebHPa!lF-;O=b*$Kf{(vZURsbW$kf}2kT)PaY)PvuS%lO2g18E!^JCQy|cSs8o6-K@f}r`Lm64uu{K;CE>)&LH6#l6Jqu5wrgLef zw1sdl;f`ys(Y+)!Xe%aDwa5bcmkyoSUK~AEd^v>b+r~811}=xtozsf^%L=&>?x$8Q zH=537K>rf%=YRGp{7X`|H$MMT(`Qfz)1d?0OJh(}t2j;ut+1LBYaAFE6yLF}#KTkx zoz<{tPAj)+Y1DEst#p4T0?p|k_Zof7oc451jH=dIKqoV&ncb`6$ehM^;Yc#4cU_p` zTe#I+XqxoB=89RqGAMQIWs9L}@|ry@F~X}ecIrvV&JSo8o(qbsGkn|3+T&G^cBHC<^T zolaOv;dN0ZN_K&hDk~IK$Z2aAm@3g7=8BxoYI%~b311;kY9Ew|En)42*Wq-cwHSDv z&WuRIx__N$0f(2&r4`>3HBmAQTw`tErl<+4Akf`TS@>EJm!g#qrvmC{UGEA%gZzGWzW@G*zCUi>R?^4+xKZL`H3zJWClu$I(V zESoT;uz-QLwV@UR5Htgtu%rRSxDW?KsT6RHMSs2vQ)n zf#nt0j5%m3u$wXB8L4Wag=U3H3r$#R!MCAG3p+ZS8A~1>=g*cAbC)%tP9mfoTboz8 z6@M$;tLTY2nXH#V@8~%?nJ_1MM?+!@_^mCTz~l~VEb#TOaj9HJKXvvtTIi8E`)FYY zh1D9078!>3u?q#3T`1HRD>=TH+U%av5$H)c<;}eedPL8WECQELkL7m}uvRS_J;5>y zWs@oC7i%s&7ablnc+gOlfv;F50zDbBiGM32TlC1JvlG{#>!!HsFTAcYkSLbZZKV|6lAd{@r49dJ_%LeJI7j=fM*0Lw*GVG2;95w0Tk<>9c=5!tnJ%R#-Z=vX*jw`rhJVf^M6hz za0kf@5>w216D`pxLl(6A8R&O%BT&?h_ruj@wfYA`3Z4A)_ASq-w0Qj6s29oQH=IAG zU5MtB=sp=eM&E|>`{-J34rv067ZOdbe;52WtMlNc#YEoz#4{=>nqhTmTBi=KHq`V6 zG8z}8Cw|m_-}~jn?i(W=3a+aya(|z31XgwXwiG?Tx*yIW@&7owNp9n((L9pvq|24i zu~Q(CH`AE(cz&uGpFXM^K0<^mDhOCqb8oh*(ha-}a%h{4qv6_%!a(rbNc@ZHf+LRp z^Rx6y04DmbS$lq;EcVQeROQ%PGk=~liJHp? zB$KoJQrmeI)frp@dwH$HVzB9u5BzYe3Qm;N>i- zC7#F8RE7*Lm$(u`v-`NH`%wJbao?#mAM0rx}-t zRNT_LnTW+L1v`C6GJnCvtPGMbwHEO{oJ}zbKAEy#)vqKoINs1V_qQ8ubY6v*SPE$*Oxb#RA1|M1T~4wtT;8IIHe1^*Yy(!8 z;dLYH`m%2`6BvxbRvws3^&ci6UILAz*N@Q_0n;%?lRMebZGZCc5RY$Wb-5D{^&jfc zu4LL5n8LS$?2)vUa4K!Wr9e%|y($N1CBd<2y0Sbsr9;T3`NaZBW(Bed?eM-x+47K0 zxPawh=}pO2h023T3aPWzPWeHa$9MIs_>PIhQQC<-v*Zg}@bX!|ghtL;;zGB1!=k zy#GRlDjFzCqm1R#Hw!%=oCQ~@M0{AO+5BvB+ISewWEzU7M_#lZN;V7Ma-m4F>N`06 znlbP)tsayl9^>jk$>K2$h2_%{1HXqK5v^tSHoDLX5r0uU&aS$kH=gDk3QRJ5tr9ba zV`=@BGYWpYIemQ0AWNd)gt!0RdrV)SJ)KJvd_hKXk$Qlf*?5; zHgjL1tk06UJbZ1XM~u7lk8G{xNiuRPxMUTZfvZeSRXw#978ixHZCvUYW&qQFW03FCE_U8#B61(7(vWoQjGFB1ammJzV+fAhHg0;i& zj;Z1k^^HVT=qymKRVnT=hDm7WXIL66TxbAR1q%`yfF-~}vInf!g<}tOrr0=rz-n9} z>3;*3%yOp>eKt$^<5B*BjX+?5EW!y=GDv!sRKU161Qxrhj6-0>tAHHh)ySAO6qX*@ zI0ROr!f}W?{coH@V4bOu90JQoxpRn)qGZxd@(*kr0;@<7Vm&IlsJ_#{xHtrse5#B? zV3DS99D*}4eFoqcS$s`StLiH)31zPI5d%}uy-Ljxh}XLIQY zH%P@7T!Uh%xnQ-ImmAYKwb^ipQm`jWHyafPE1C^IA?f15ib_xyLegDZH(J(AZADs}7Ykl2aY($9Q&+s6|C4MLN}@mJHw6#otqU`hRWskuY1$ zzlu^~YHl|>$Y9vZucG8BJ}oYyq&+mu3D>iRk_HGaGzIf#cnT=7?LK*`O-l+WX}b`v zH)SrMB)&e+I#WaeCFKEmR+wsjj%D)@fgt{+OrC*&%!{i@b`e!YS`-GQjfM&qVoN*I z+67E8C*j%Ss!#KSh_nZSp?_GbnA7t93Qh$yKg=tqh&B{0@e(81e{p=cRP4XpYqfW} z`#ZoJN~X6u0<^@Z<2PytbJBBSEhT*ReD9LMwQ0ILM1CVOh>l#1|1t1rQDz^ z17pI{>EM>z$_9**YO2hRRl%-uOf4Uk4H)GTCpASTv@B(9#eW}VgGWj8mv+g-mImFm z`O>zlsP4Zb=o+1~0~f)T-Go|Z%7kj)-ooy1>DI+6S^Adh3)8SS0XzAlh=?)M^DRo5fM>ylm*a6B!)h0lWJ*;l(rh8DU85{t!OK2Vpit?VkSRJ?-=7p3&dGP0|Um#3*Qs*elvd#j%P} z%wv$9wSSc!cw~*5!pOuh=mOd>41=ntWn>ssQ7zL@3>R<2-9Wf_L+Sxk!5S~VD0ZDS z0@wVLDq$6G6kMNV;Ft)5RM*N+80bP)Cc;2ft}+dUXfNNJhgv=_S3%KYtBwfHY zsT8^hC{_kntrk&5&fTORX`Mk zB2q4;;mnegkx!l6QehD}brT`&$ZjmZYibfMaWOWGJUD9}L2 zDSu#P7c}URNj1n^gA#j#r8zq&)d@mT9bD&zeErIkR=CtPVNKml)U>x>)0VuJ1qx~^ z%vg)UtYTE19H%|=>#Il{3*-E{P7EcHA+4IFk+G{ZGP*|8&uRe}DY1EWwybDS>1I-9g)lyiC|BJ%s6yRhBsu zQi_ZR9jPoJU;^r-?csp<;`nd_QXh1nss`SS-fKfSznBiLQ~(b3b1j#G|%4gNPmSG zQVu;z`@=_$h4zH1tMP^pMS;}-F-%$#Rwnq3sDsM7(8}#(njW>7VAH=>krg`1$_V{)a5AIoozsAJlwnQQSeU1$PfvSiM_+zDzc`A1j6T1S|Nl`U&kUz3 zB2NoSiu=Lhtvy-|qfo(9yhfxgLWy564aL-BjW8mi$6B_BG8?N~JFgsw(EJ--=?*qr8STBB8v- z)nSA}Z+Q2SG#!HYN51<=8K2C{HJih+J!y+& zqPwGhu=>jH^P5;s;^*W~B~qz-SQh345f&viK3-pHY<+&y-Q8(7TkV}9I2{S6iA@6p znftHj@m*_Yrv#L`qWb*ib~+S1KP!LL*fdI~4u3%lRCZ#VYJvGfJrz@6iUGlCso+B^ z84&xHh#fKW>E)n*c6ok=<(Gz-&witEz_*P-(?H^vgJdixa+(a2DH|?Qf+;{RJI!V- zIvgbr;*&$gEiK6{t?gF3ggNj&CaH7W0%OK#zfbPRH!F;0Q%h%muf4m|Vq-cud6Yyg zlYei?>{P&e{`{sE@iPsaN&1qQ2F@T2$TV>Fs0-5^_AXAaJhRvAw)VR_zwzy7dZoiE z&m6|nQS^_e>0fIbrM=T`wfBl_FcBloquhiz-hCjRecnXhskJRJ*|Z;4S?`1`4%>u zbW2{?gUNK9jD~UX+HN-H_sg~IdbhRD2i8e8aBW$S zo^Q$sd^DWT#b%vP{&=3St!g;u^(C!pI1|=oRe$K8UwlBbb*J6k+wbo3c_+lShS0M9 zkW8j`Npz6R=HR;CEjpcYG(#k>Yk%?Cl4ZSXx+P3Y#z}#;(namxi3S^bMFz}n^pRFj*rZ>+uhw(Yv+h>KlmG^j}s#9DkiYCE^$X zuIlDalMgMANxF~6v*I;9xE~JUy9w*@0q!sPqL#FmO;Y#mtrl`9XPXplr#ob&@H)Dk zJdIUeK-M|H&gCkswjcm!GiJThf1|d&ofgWqlYEVtog8d#`<1jxF2EcHZ6$Zy-t}um z6-J0`HGPqZ65x)Rj+BsBoqxd15^&Q^r>oZU1L_VCe}!p5!Oc0{c7Q~cvjZ3bJ0*Cm zFZ=~qc;PR8y|VDr1lU@H-V3zLTeuY{=Uz}VW8MqC7L)LNuoe^AaH&eiKl=ZcnuuRc zdsl}akIz1QIqe_!FS0%O`AvE>`EO};d(j`s^S8G5x%c94zk8j26)fS306uQAE zU#m%UYKEoBYImoV>B!$zH={^i(@K4wxqeTnv=&!3D7woiUz15Jx!b$jcra3eCtbD1 zPs`fl5S|GoEziUiUw;E_X*IU8#Cj|=N@crLcCy7Sqj$!$TkLo?$xD34()267mbvd~ zGa-ydE#XN~^iWFL=wP{*)S@)i0En;4$_{psgZqo}lE%Ze9xZv9=&{@+yJSg=mRVUI zq<0c%4{&V(e9uy24JfwA%8)c(jdV+w1=Zu3{LPli2d|}hn_M-ORaHy#P-^OSzNT+8 zYw7h*k&p+irU~5^wIud{f8iJocHOo(SqXt4ORkf00j9=;EIQhjISJpt|L=eOA5cpN z2qWTI7nY*|0K8oi08mQ<1QY-W2nYZIY)qH2qJblqkjjq)m#g&<43}<^BMpCA+j1Mn z5q-~BY#}d6l>pEEqBll2OBKnEM8$R`e(0I$ArXUE1Pf3`x%ltt0WXCG7T|)URCxgb zaIiaPy65ycJ^RN1mW%Ux{u0KM)r)$%n2*D9F|Mc0dzcNL|1o&CY!>6`@Z^g!gXjPH zV~}8hgXaUmgc@=-WPI>!5bJ-7i}B(kHp|JPS&ur0=A1^QAQS|&f=g|9%7z<^=&Y5N zX_q4+gY1K)YmA%sI6uP|>q`xuXP7kjY;b{117~D;v{s<^I*WhEOxB61BT+BP#|oyYn&Wx}>iMdIl;$-00r2a^InECUQ)~s3 z%fxc@C3@DzWMz=Sr-&)}s8sNbn*`#xMEq({_)cE_di86$HY`?)<$OJdW7$MXoh?BJ zm9h-ro%Egut+ld(rR;=Cv?sYchE4u4hPwJ?{O=|0W!ro!R!M&un8g@_Ofg4hRq|fN z%rkKAy>J1OG|{F14>A95p7?IL4&sm) z2!~(BiQeIY{&}{`LO0O~oL zRB}tIhzY37Cyy+s0McrRq*%0dnm{MiCOF0(gG_(!;o4m^A2E-oNCh_G??klg=pMzp zouT!ILMuqVLx@rVsdq9YMlxjdVoSP{$)c+WZ6O|`7haaih80aPkLMRqCisB5nU~X8 zKEh-eYht*q5~}Q$c6c^e(0X@{)jR5UEgA13a=c*FELlcsgBwM=f>K7I10u+fEWHU1 zl#hSR9VZyy)y?@5ZdKOoyk0z&%-WUA80ncC_Dn zTe)2%UrqVy2kAwEO5ByBOyF72mI+M-EGy!+EKCaMR4i7!FW^pr^bNu4gJ6l35iI$c zta4OTxFiX#EEAHxWCDr2V-(K!1$!?;Jq3So)dKGJ0O#xwaP&+gIa;9o=|kW#BeRle zWwLMylcS^uTA3qV!RJzI-*hUjhha7C#)Oc!%n5skrTw^jDC#X=4RJ1 zk>(lx=lXLe(A@@Uf0YG_hf)-aNYo@3opwA>SqYh3A$qT<-ei(rkAY;jlM)IoEq4vy z-U4-msZEh{tAb6GYnXWmhQ5mA(5Zi7Qo5m3Ec-5U>5s>?^>7JKL+^2abjnbCFea$eT0#Y!B%(^N~U8et`8vQ6t+(0uuQKcGF7@*qAuC~~N@vC@2qz{$w!XqA7^%!p_d zC(lNDFQ=So3m#ei+OGRaq-k5_aMt2N%w)!ll$L}wV?ZxFh0=BxEJUKkn3POf^*$qM z!&uaW0V zLYEYfh&PYnTIF_mDPEh`;d*A>+NRs)9?@81-WZNTW|WB=tD;ko1vkQpVAiL9QljoS zcj=8x^G$Xl>7Ir+@!vsoUyk(06{)Bj49q8&BH2r6R7OvFG)Q9!a&Uiv$*3Mv?X}ph z_N587?u71boVBF;{ftWz{HFFEFTyQS^neq1pLN!Oye1dSDyhj$$4rI<7-ZX!xS5 zZhBUi^r0My?{*8Hnx_Rj#M9oj2CMcNvX?9YM(4?cCDO!RC!q~s;+Cu@twaLS#kTjc zW2wvW9OG}zVl}}E=kt30kl^350__E87amwYlHnq4U&?N@PC0)j6%rA+mla;s=jw z1kz@U*7?!~DvE!R9343!8$3C@OnbCAJKeuIeM?I)PSqvM#}H@{NIcW+ex&c7K7D1o zw=eA>VlrEgL$nXmfz$>SU$C5^v1DhXkyk~z;Jo$b&#AHhPpveg-pQRL5 za}|=Z<3XRAt5wH}?iy@=2qS1E^X8<){ntwXfipIUbR1g`En+;=zR9lt6PW#eaL7OysR z`Rz|R>$-oVY2VVjtGgB5T*-eHMw>?5Sx(JHTnMGq)(UZ>N1T$&w!llSM`YNTyaT43 z_9MZ#-I%eKN{+ac@@^_G$IWa4s}FF2T`?WJ_#`-!r^DBj-9uHK{8YUgjXs^e{V>>? z*7nH1zkOegMn6=)l+MP+M7PJi`{C2~qtW}fAKpU@?xwyy=Jf5WpGKpfKcAGl-htU3 z_38VQ52I0adh*NQ>grGb15ir`2o$fjmy!wq001li08mQ<1QY-W2nYZIY)qFRaSSJy ztMw2be{&-@vM%~p;P##fiHjmdN`2FQSR+g7wr2V^Eww$~-5pYi1j(|BRh+s=&9NOZ zuP4sydD(C0Y5$P(Q|6Z(WCExQ2^JF~SZ%LZT5H-8StJrbA~TVfFF*eBXy&DpM@Ns| zpB= z@@VX*=R@&{(R_L{c=TKQ(I5&_9;V`@kKcSeIcFECmuAW5ok^O`lA~@{d|;B@bOzD1 zoA5n8%(~ui81p2#iK5%RfZy@ppnD(1x1%7sPr85c?z}(s_fO8dH{Ni}JIUR6*Z5_} ze?RpP`;RYrdnXtD-u}Vm-izMh&E8=*oprrI>PKO+3p4VP^mR1!M?N2(dMV7czu!OH z>+SFD_r?2u@*)d@lb8>EF@=#AB>cB_b^3k!^as(952Cw*UiCu9kGkVY9m(U^n@x%- z0FXd$zyD_%-SY5Lw!eQcJUDpy?9Kk^;la~g`+qN9w+08aH8>!yft%3|iKBhXUihIG z4ty_Q$HO~6iQ3;A#vv9n6->pb^+Sp{D5%>IZ;wNktN5gE8GV$vuicMT_KZzI* z$A4l)*eK@z$i#<(ITOz&GY(Js2^ZfYmMr$g>wd@vfiIq6QI^Ks8%#QGnB{q+=ccz$ zJvidza3Q9J74eYO z#Jl6n3y1QTFiIJGkI*Z8$YMS~ZgNCERe!X$*hLhliDJ}*-FS&0CJNb|;Nd6}ZwLa$ zQS9>sDfeKqmAMLiFQg#5nZq0f{}&%{G!?4c7CVup(Nv6*04cx_17Q%r4kSDr`r%m2 zfO+y6e;`(T>W4!?dWzelC&l~`^Yp=;cnR*)4d-ELv&6~v#I_1c$I%>(;(vQ5+JC46 zj7$1LEC?*lkf)xQ?vM$kkWIzA9_T_?+f<3ppZOqdvsu6e2Z;se__0>&xTyRDWZ>De=?pY1I+RR;<2 zDZj|o!J(>&%hC>l^2=oa?BKC9tAD=(v-%a9)%l|Xq0`_r$fM6bUYzZnoqiC9!%uy| z9(ScJmNxnTnWhuP%b&dv;C<;Kfod%dR{*x(jRK_AI%fA1|Rk9SHe14q@5yiXmOBK+L! zx7pr44rUYY-Tam>PWD^&%Ac~o`Ci0+^0#R+Z)dVb!8aA!bS`dBLeN$RMTgD6pN?4) z52W|z(<5~+FMS9u=${_3dw-Zt^i%!){n?jK@*CFKs=ZBY)$Od4QGb%IT&Is8rNwA; z?3F&X``OV-7{y@?dE&#j;`_paK>Z4m82HnF2#%in&IqJPQAb;4l!q(VqQ%}vU{9Qa zMH$W3deMjz?i)pA9Thy8MPcIK_<>NUN9PG8f`1@&m4fQNKCkv2T=n z#s$a)QQ58GXu?L3xQdFhAo6)~RJ;;!bVq|_`;W{El;N-abNVu_{W8hAn>CU81B%t@ z=>BPxk$=e&ar46MtYo%MW?tLk$VB1Imrv z(K;FB<;r!c6J(_ixe{gvlsmqog`mhyx;j5YUDakhOdx#Cyy1k$ zJREQc4vI%0c$lPKIP~J741|hdi&q@kT!+ow*AJ<|ArNhsKEG!_a-aP@^VS*1#Pp}f z&6$^vsaXVdq75J4RIE|gra5c$F*Q%1PNd=EYsDFL@_)^ln2)JZcP+{;Ay)H>dqYQ4 zrHA2{W!S}F!iQOav7t-IG{N6ac>vKNPh1)k_{$s0sOH1ytqZo6ooWzUD;tFn*ek^G zk&4HPW2i5`@BtOAeY_N=&28A1nLp(J9j$$Mv^HN!hD-ThG-%smm%#5bUWzX|3Qtq+ zc)uK_(SP7KH{<=jqN{sf;m6JFHo7GCARc}|jE7T0v#r+g;5Llz13nyc^wPCjjwsmZ znrJr^Mc%d8FM*$=49sViL|HuGn1Sa70gHK-@L|^*dNWL-8*)!5DKNm>)wHrUTG;8t zkB56RFHYwy@NZ%dlMwgzm>&*;Ojzv@JWF);UVjw(V;}M()>*x%3Lw42`74j-FN=LJu}NyV~Rn~l});&K-YHmy0RcEmI%-AQ5J_k2{OzK+2> zU>~oFb&z-5>QY>N-cb*Hm3!{Bv*~P|^28s9u8z@H z4}UZ7nS2IA|BgXD&@j3WwPPTedEuu=Y#=B}^lM(g?seiBuyxD}pBecp__q*$}motY6{mcs5&oV(pgdYe&czhI)x> zal@f%OGs0X{Uh_CD(#NPci`0*3o!MdP%)a$q7X~Kus{vO8tzZOSmX8_)2jNHQt zpb;aK^+)-DWf^`NbKaebN$|KU#99{^uKTlh=ZVjhKGKEn?!fE2$b)h)aWuC%9-Mp} zau<#VZ2iQG$2{Nm*^C8V77Dfpl9EXVnO66qBmHhpGFWn{9H%8h+DzCPvVX=Z@c*f5 z9q~+-*;dt(45B!O?63rjl?PmUR>XIQ;#K_U6fS$@!)-S^ipIm)ynr zf*;;Rw;bwLxfhBVOt~0m2o>7kcoMS{8!W7AS2Jl&0g`eWKmiKN`nJTTpzr%n#R5d} zEknCG zmy|n0FZD`G31Vl;r%~O(v!j@zA|=HaVx5GYENM>U9~G+Kb5Br>6n~H6XeveFee6TM zIKG-jZD}TY@lf34l3Q1kXwJb!N~?g?IuRTuRJ>fR0sgV4wEQlM`AjHCDQg8U1_2-F zYHw``;I&DFtQk~sLvO=@lKZBM83PV z*yx5~HxxyI0DtZa|Kh>YOQT2`t;IR2FcU1AS|0fzUaGHIzK-(JwtgpzZ&3TDzDRD~ z^4@8(@_{<+?ebl?tZO{wA1o%4PU0vVPmrd9;Ml|ONhhAZN-GXid=zspiNYg@0su#F z3Go(ifG^BfBZt!Qicjvg;eXWmL69YB?4Fv^lTaQ;JUf=Ho>gXY#_Q>`TF9xd8gSlVfF` zfM_mR;jR{>IX~M|id-Rj#g7nl+W`Q?{7v2eJ9)+*OSAW0rLLR_N5(fA?FMbh4DHwG;9drPJ zQGyS)Rc>HzNt9@T_k=?CQ}q7GEBp;8S78{4qw!9VRW&mP-VCuU^Sh?BR3HiQhNt(4 z2&lXvIL+K^qNb==x4JZ7m6(EK%zQz{@Yb0GEu!S>WKE z?th?*Qzpi%MM{v5@;u?14->?LvUF z$P-zzXe$(`Xp`cV?McXD5EbcK7Sp9iaKV)4DtGtyCtTIVEmA)Sy0q}3t@f1B_2b{nXV2su5Me9KJdh5$hUzBV;+F& zh{DPz#22W&%XiJyoG8WuxP)dLSVhp4L{pxtG%Z)v4wYsG_fp7oLp_~nHGR#Z8-D~M z5u(ON1zi0GSF>u)HT#T~KK?Dkt#p0ac-CMw5Glx}E*eKdLzO%{Thf#m7VQ?}IMPth znv29er|5|9g&5I3B5$Q@M_DLKLS}XJ-fB^vHy2`iPSF;1-X2_n#oN_VjN|eCr$l%YI4SLmAcGEA7Ews1?zOo?;1u66MCTm! z(|F#Tu6Rz-6%Q|p@WWB0DdvSKgvt6L zMxuS`eZV2a2h?$_MO^NSqd{D6ipC;W0NB-K?KgML>FraLkWRf=jzxiA!BsX}Z+|1d zqvco>&C=_zA16F4f?Wv;Vt;W5%4Tq%DDDuRzD39^(S*&wn#Yh6gn3I~{`!0%hH%M--?Pw%zAeQqTi^Tcf$t>g{$M+xOA-jq z`U5|m@3xCvYGDD0rGJ1m6Q&YaU;woeR86cM?Hewi62(BWsy$y^EGP2@6JLCfBX!Z+ zrk!S&MzMtbWPMg&kzgjY6{PuMjqPJOTbkDp&5;EgL~8dc zm#W+$gWVySKQ}bQIr;lf|7*c^-+|YzW!>5=@CJN>v791DR0d84x$MGhHKmQkn2Y9! z6jFI?s(MtFj(moUa93NswY<1fo<05bat1+uh;sEi=?Yk3}CJ!0I6y-C3LbMcyTaSDZ#TSk&#tF zPFq~xVvKc2xLIcl)?BEyM?weze=}MS1b?&TRBgS$NPoswy}(#`(k;euYIm*?SQ=Lv4T2GK-%BsdXQV^J&YmSbP8R<^l3o*oGiq{X0MN~uM4`WT#8 z8JYDvT*!NH{VoLi@^or1mM$?*r)>xw_968Dk?|slM}MdWH^_1sX%%;+sSUC?=Ge1W zMO`?QHh=M<{L3&qsp+)G0P~v?4wXMlOf8=8syihY)&iIWSF#x@A6{X^yX*lF+DiIi zRFZINi-ZKzNMPeQ1P2z6L+qg{b~7GlLLh)EQf70%efw^g zp=|_wJT4GEI_zAwEEXJm>5Z@DQPlyz(#=DdKFpnY=&~5rQR4^XTr$yhI!(7K7U>)3_X>bq&TbmJqgv5Xt~D@z%t2WZ5rzS zj;DeNzMAz%0^)IGqmV#zwiM(dq3F08tHIkO3GN2_z{yg1*ZE7m2GMPLM0lIx?y4re z)!VDWAn2CIa&?0x0mrx+Yg4bSS^!eoj${98z$`+384{#f=47FbYS`+woECP)ULIi?Se8y3>f8a zOr*mRXIi#q@=ZVp0d45(SG9pO<{Il6&ai5&-a>c%{cA)1+Apz&G;wkeo; zQ6>0UzXE;o3N(nTOhTgpohs2)^fJ2|y+N-f2}kB+6&6extE*h11M0D(q)lg_5NOy; zNDZ&fmw+wm$=%W$M2zW?AY=Zxc+$NFv1WQCuo*;@KCcwcI|FEM5cQ=;f`5I%d$_9U zhOEUw?B7735+rySrBF}3|0um*Td&Xwg98Wg-F+!qkM zpFVwj7f0yW`}FBE`w$Kzp_GP^UX40>=!iGH&5&Izn;6h~jEKqWnX~EvaYaXia+QRJ za*0?hYRXx@(^C$c!Pq z6uo)@snIG$7@a^8cUor$%pfsZmdEHkypbO#DNFq+m!C4LS)ojW0DLF~cy+0)TfJxy z5$z&x+N3`v44bbV4AAUDrg$%Zld~;rP-&7dU%vSWmhOAOw12oX`vnwD2N3@$Vc zz>vchNVTVdyURQ(8&a2R2}=~`vk|1e2ZAC7H7o^Wj0BEUJN#4^$2LcvhfhO;#d+6i>t9HT6%$F`(}>q zyX06BN{Xwow%dHoA|2;^R8&>65qjF-x{{Yk;f)&pJ7uBVV}93E?7w%bY~%bB z5#CE7wAEoWWW|xJ* zYdjx1&VRfrNjW$CUD_xOV#V}GU@;34|G+Hq4_r$82BBek7T7S`m-w|-GeBB~L;i*B zw-+v-#Wl8cS~L%*Dw$dpi-u9b@=H(SSyl{hJfc{{ruB>$epvSZKo-V?Lqf(VuY*Qs zsh5ba6mv|XLUqX!H1v?fag?{yM42RkuwCsk#earC%xy1C`E;h&RtP`XvfM-CtoLw( zr5GfPn=Pq666lSqv8bS-MPOqI%&2G_qM|Q_=ah{jR06Ro@wY<8va6;iq20JzHHyBG zI$!}wsGts2x* z`Q?PF22U+UDdtPUtj&@Ps^Sy%>9%CUEXgoYjOHj_o!SBB=PF4Kv&)ipjn`Q4GJljT zB@CkaP{r*kCA8llT1uaUma^b7J2bn@4jsD8`Xm??S7T8u1!Vds#;_hV&yI85zcxtM zVHZBC|2o|Qyq)U|br(`sm)cNuU`qW+$}w@{h&rcamc_ux(Bv1pvYn@(f1vIJVu>EK z3YXRFsCb4&RAniyS#pdQS_Kn;{C`LTVMYlaeI8?8_H7!?%6Tz~a%{LdRwM`+S7T9( zn1y5Y*nF%WyF6A60>t#m05OIC3W6i8IbvsCG6%hymn}G>gCdB5juSWrYJ<|21X;1jPJMI?gyN3p55+Aczuw%2 zd589>l>2-$cSS4>z1dF_9*msr21Uvi4E&?KoI!GeI7x~*@oBf;tau%>y zDIr5P_m$7oRd!oWfg+&`-v5!aDG(=Yj4b8_wAXTzVN786ml;7qxPJ+OQwKL{Ifv#_ zDEcHsjH_P|K*>W@lQ5Z|n4b}yTPs8=AO3dbim>K#DEcJ03qzgcDS|%4gNa~@aO{eh z=F$cGB;1RuU(UYF0;r8eAEhq%7*-~)D@BWHg`#xU9ZxiuaMve6M7SD@B6t6|_3(WX z0EDZtXpOFgnm>&OS${6#+boF2W5LL6jfLEXJH*HzXR&%<$nW-|SyEp(Pp^jVlfWVz ztqKXDD)!=9m zG$U`dT)AvX012+fG77_si6_*fw zKYKaB*t_#G!0E!E=B^ws}zT61a6OV1FJO@J)u%Wa{9`KQ4p~MfMak)jG{P2 zBy?E~c=GBT_sr2ckx&C%jb)Ua<^$IH!3#2tX5&j#tADz5KAVGLuK8ba(5KjwPD1&E zhXi;uPmV#p83-YOT+@B|;hYU)gjf(;-MGDV(VP6pU!0fy|9?1F?Gjf&T9TLc6iF$F9PxtL__^( zD8B4Ot*xLvseCJZg{){A!fjBd;z@(d?a~>Q{g##v8AX`Jd^&^Fc;J=+^vT}KW`a2q z$T5)k*j&O6t@tAOWoIL?oW5KU{6P5|^nWKYg)9^cC*IPm=WOYWwhQ6F#ypu|W0$pg32v2^0<7`5rsD_<@0oWz{(?eVID_N$SPuW5?Dvuo?Q> z#R}d>@vYp`Z5&vmDMsMBhs!$IvkUJvQz+<&6?2@Mj;yC0F?e?GCwf_bW#4iA1%Hx5 zfqj`^UyaQ+T}g+dr8C1HtX?{~cE$rMqzxu%OnHhx$-qgFTv;sL@o-o$#b!ThA4)m~ z7FTdEGGF~iT`e8m%TQUm_dNBnVJeyF#D`>aS0}6YD|;z+DE5cdGpd_k7rEP6!r^Re zW9jIQk&3K)8;=1Mk|5$rvptbLgMUZZz!-(mIF7^_%cq{f`2`Q%kVB%HAavM;l&HOd z>NtVVCrp~fLTpaw#fQDYAc_GfCYY}x!R^w~y)+eB_gZk>APd0ZL0vnc6o-B;$8xaq zhyDD@K453Vys@Dl=idk(qpDKf&eB=jCdvo)K}&a>U=DHWjgjTbEMvcPXMbJ-9{psI z`EKSp<~$Cxy`{6eP1M>yo4D45KaA@@!%AcI-~amGY!(Gz)F!Ix(vR2Oz81c2(aYZ7AF_HC#(RihH=ncFarOMf+;nA)Ya12T`cOBZoTUc zSWo5fu$e!Q-IA1BA9b~UmbVLS<-LMpa2rEKt4NPccrX*D+!(#aPys*C7!wvhzqMut(hD1 z-yM(uu-pVP4@e+ZtzTZlktyJwJzpK%BQWChPtRWK+`QGTCL-OxPMQT9)lFv>$bRaW6`9F1%iJB z5-achggb(MI3Ph7xf;tNqpPJ^=LjtcPfL%QJa0SMK*BU~HE~ipZR_>Lg{w670}_Id ztFh>Qh+c=uY$;4`PGsb;=yahrxvpES)gIGt`F%lH8A(mhl$1%rvnp|OJz4Ul5aM(c z*%i$V;(yT`knm_gA?w2kU_&*X#w|y0E>G)#ggVn|ok5>U^x-)>hz%me9GH<}RwRG+ zyiSGVAv7lIwiS+_>VG6Iad$r4ja4ki8KcwfT2~{|UCqGsutdG;8YuywSIG6zr^``S zBhm$=w9JWuz>W$tTFf@*ZN`kTJSd10^93?;z<);wmrORyBu*K3t;x)wFPywlmqQ(mnb^j@itu~R|)EOmhBPMMy_I$4EFjm|Y-P0Kpc~E7Lq32nbhZ#?Fc<9Ww(h_-G3 z*?%X&G%tYYuW4FuNy&!YPOQeF!4htVtA97_U}7~EU9^>T>uWE*E#xdD?>yF&Yp|?OQaW$gN{kO1DRJx^m4}ck=WUDJ+Bm7)iCT7r* zZBEq;RYJE41U38C6%(=ri?W+ zR>*cj>1J?^rcxu!_!L{3DP1;h#eYn*Kt*shqQwomA!E&4q`#dFx2S6WDrTCwbbL!| zVHf4zl7VJXw(KlCWl`_jVtsE*u|$i~Syv<4CIOjZ0}EP?J7s^HIJ2uUe-C*;hvv${ ztsMMAa~WP^>H3EawuV0>wT6du{Wnp#_d?a-dO-zW+Z8FznQ(`sPVqvsU4KlXEEvkN zV+I1TvHC8j(Tji@GjG3z=gp|ihWPo4k^83A=+-SH)_w^6dLB=^8f zE*2Haay6YQ1|_V3p(Yd%f`3aRZjGD`l*mOH1ZStS456vuA%Ea*QbuXKa#CQyn7t|4~9|$Kvb%wPXz)IkkVINgh5uSRC?*D ztJc6Xh2O7Q_{LJO4mJKMG-y+RhhRx>fsM_DQ!B}S+F^gocw7|L>;2n-bd5F!i`z1Q z$kRcm%!$HQnnfDz41e}b?973fj`;HRmI8S?M(w$BI?t-RpooQ?06_v$M0QGLT|8V^ zUEF0qM^I%uz^_z4%&!WR}gTP%CiR=RzBP4#j|- z)zLeYvx24p#f+j^>Q50$4@gC{9WNFeHHd+qgq)6oOqQzmp7-~^^!A_aOGH|KEM_J5 zO+B25trVwBDCIxl%f0^NKRKJLojuXh1_hu&DD%c3*njz#0c?_>czWZCQgdnEYD$Ij z|G`f(FOY2$(7G!bKrDcEH{u43m`XSw*(1OMsBmXQH&-%!NUG?Ai{{H9LMT92<2F~s zd`PP2gZ{v;%U8%&3mV~u!{|O~vsZqYeQC1~p)dY@?G4^u)Lj_+d;8C+v{8E(zl;65 zQk9Y_?SBIzj~8B(z-^l^!ByyiJiIlM%P;mJR1yrGDfN}wlcWkemqZT64x5D3&oGmn_ zynhRWImX5Hdd?2o>`9wF2ZOuU2Nq8!t`@;u&RM?*0ON);KNi;4IOgbd%xz!L@yjz; z=o$Gm73|nDg`F{n;V@sb75r^2UCZK^x5o4WqcDmRmG&*Rt4)&2nRUt7@3#N z*(zrr_JrblMSbtEOi*r>C(f~JAz94T663HHNES;@JgFXdw8LUx)y^A@f zfFynj?Q~y3>3w-I3XJ$`2#a6qh`rDWS&;f*LFh*nNFO}rN=$546KgpZQHVkyT}y}~ zcCAW=de>W#?4%;uMZx~UkCUR4mY=9fnPKjZm3t%(gY1Zkrr|V4|LcW z7E0)DXtkSsQS52VF%MNf=1psoCM+k`ppq~b1siwvt;(htL~+b90;xJ8D%^hXHOBLN z+ppU>1AKwsJDtuo+kd$i-yvRr)yMdH3=zyiNTQ{+yB&5RUH~fWa^X*XNC8bDI?3<+ zD05Xrc4#g>-qJ1;ohJ>Ld*<5XElr!EDZt!Q7hOoXb~SW^(%D>7Y%=t`K;Gw}Jq&b1 z3&&kJ&Djie9LydsWUj9F=E~#ktbw_j*eJ)YegRiEv}{zZ(SH(gtH=J;o?%sBLE3pM zfZTI_!zY4gqS)EFFqa)~X|X7xa697QvmW_G41|p&#clevHv>Y-G3X=6=Gs#*CA!k- z==tN{U@|i=oruAP(IDwUa>C2ZAM(x=!p5*&m-87{Zv&N35clZlV|5KE?BXnVO4-`L zn@3rCgzanGjDJemqI-$?*r7(^lNC`cU+0KjO_m{h17J01I8uH{ejb`XQQ?YDWcaWD{U}rRVOK^=L z;k~WWOaEEQWrjo>kDW+!4YJ&Lk<`;_v7M7w=ez3apMRv#pKv0zBFMcP9`X^EK>&{S zs?;F1^YX*_Zik(ZkgNe1c91DF@}M38W{9srKPK^h(F_o$Cv!@$6ow6P}41Gl|cn048_y?xrIHs^ICwIE`bSQ{YL`9!|xNE=gZgkO%*Xz-hx@kmXG91TSj z=6}%C8-G%#BS%BgV#@4q(7jnEIXD`)xyul#vyd=;R4YvoWLUaVS5gYj0+eVcSm?-O zM>VGAx{nnaM_RY4XcNd*b!^ybugyNf&HMAtBu!_@QMY@4f8U8>ZxHZ~xWRXS7PIT7 zd@u>4AR7D7$WR5BlkT_hX7A~)ZhxiU5jXY_+kfui(#ZVP-c$KsH?rAWKC*iL0AW4? zrQr>ro4wXv_xuKYxotKJI8?sE`u!fr` zx_{lnewGK_nB$%#yN=X(gAJO@wHqte@Sr1v!)&fnU}bSF{*GxGcwX;S`aV`Y%A&7-YwTnGN9BZ0sQX?Fk-2LJ9UN!d;2}{|HK&*Lt)>1{D0to z-jM~%-4A|e7LFY?gESYM)SlGK2y|Ge;NTW{Z&-R)znWh;QPXv$qQgoK$$d)Uv3JqE zcx?iWkw=9dlux=k&PHumtNfweC#G*Giv5Mj=}abR2H@RP9Kb?gT?0!F#D#M#&)6V~ zF_}l5OYvs@sG~VH*cR5P7*{OkV}Gnk;T6X5t9*15eL;?ZLY+id%c)!-{)G>O1uO)9 zhw;w1qhU2#t!uDDuUoC+Q}DX{;63;oa%RNd&?;GK8`6qY7a}<70t5^HqLTtuoGW*2 z#PcIZThkz<8Zipi(zy*X{~=K=y4UsCuo9`HG7m@7HtMIJl<4r2$1FaXlSO^6WlGY}#c0!+(Eizj%{1C=@gO z+i#iXEJuOO=3H5%ijdW{m1yoziz^*b+?;$Rm5#Jp#-dU1S|kuIQ0^Rkdy-EcwOZTA zb!)IPgj5*PVn0Ul5VN7LKfHT)_WtVR_~Psuv&s=5$cu&ftE*!Hy(9yF6{OkBb0o2? zl!*|lMDQXD)XPi3n}6fiXOPl}|CKTOdZ?4V($uhtd`1`z{^64Z%Gi7s#>%l9#vFnGUEdnI?2!Vto!c!w{Om_-h6od z-PwEC!0Ibngny&x4id!W<+C-whj!Cx&dMj1!?eVWFO9vBM_E!&xozbkZ0lPk?1j2o?@EU*FwQsxxJfF{^bk;uI&+FjTFW!& zZ0_|B#63@Vh(9yEE&13IQU$8r|?NIEB z#ZXW$6Ad!R(rd#C4aC!<43OJ+h zvLuTU*A2b_p4z*Kxp$jjrR=y!QvQFZH%L#s1UQq!(qAP z{0MKzu9mhrgWBBlZiORSh5S_g>0*G-k$;)g8Gp~w- zeQ55>w=jic&E9Zv#Jp*^H-`8XXh(Wuag!*#1pAIu2B|~ecC0jW!@jL>5vljynM_Ma z9DgOJn0xT8IOSW;n{adN&Hen=&FDLxCUbTYNB4zOP)z9tULL@!3-fxz@5fM7`Y!h2 zJj}XcR)>$DJgv+~eA7T2T}V!IHM!>Gzqvc034zd;H^MTA%8_y(I3lGvNp5ZcxPp81 z6#`Q%pmwgb0xAo`wE)F_sLl*FXri=9on zIm5PRZUwl4&0*rQH>YQRXCI}x`;S?87bE;+9A8fWxSSXoU+9;LVr=_ z-OuD}%E+vwxDEYe7I<^_DiimEpxU4m5K2Kah=rEYvg=K?x!B9d>5h$>b&21LB^BZeXg*s ziVcEt7Ws@b3TdItAHh+~m0*V3M}J!Zc__m1LZTZLDfl}z3FvEi2gRKoY%dE>>l=*f zxH8BPIYjV`vsqDeO^f}ca?mA-XjT*x`1im5cOuDz^a+`Mf1P%(b(1Vtq*4Ku;{Q-&)-#M$H;ECM!H0h?}ch1lrG{As{o%CSI6a zOG`p5mU#5~dw9har8H##lw!(`=1|R>MORkYH%*o5A&u<2s7m;E5r1<^J56}Mg@!7* zd=?8Wm)xC&Yc4M}(=ig?#^lOr;}91|7>D`7sYO$Z>U_s(SB7^=QXvIsaFy>6YWqtD zZkolRn1oDzyMFurS}k)88iOUE3=O2!#D0=G_3Fzw6JH3)MuHuG^1`vJg>A4$SdUca z>Dq84ReZLTGzVw=wSQXqL|SypxXY7XU6DmgMU-TDfw-y9SM=XDSi{*P6>++@8O)`Xt0UwRDq<7`L3A&xw)DyFUn`vW zWYNL0tANhZWS}5XD*stF=hcNLa<#O1B&#_MUvZH9dothy2w9bu&l9Y zE$OhqXmmBEUD{v48*A)a=X_z8%(r!W*OGc0Ad@ZFy?>U}+GN7G8q-EvueXCO2jAQd zMrk0d;2f;0&IWdVIBdjwolT6h=#^(-X%D-enYplWyR2xg1hh09Butx76Y>{VD#BbU zxaIY*Q4!Y0gHt@ap1HPg%j;t!+;j6m&fBd4VXh|J^6YH{x1|B$m^bXC{O`66b~({p|JaZTVXla@G9i>iurVUs9uRXu3e07k+wr}SDlQ9fN;P9w&QwwnrmL~63d>#YC#e+D z)mT)Q@kP-~Z0M}ZW{*@4>1r$+A&9~lCW@FUiFe0y{Pcf`7Z1TAxLrVVmKo8IPM9P0 z18#~$qfhdc!{UXQ%M5fDa+zcgBS0Iq48F>hU^LfBZfSMN0&!Rf#G&q3x{?S9mUBoY zVk1dtIhKuiY+|Pc?tv=9zg)b1Bb$X>fBehwd--b+NjRL(UHF1>3!cu;Lg`+2plKkq zCmhPI2{?bmJr4!|eh=Mfu#`iNKJ=mUvlvb&^Sq`4QKR%uIODyIM78BsP(<~^YxD2D z7(iq4+I;>+JSt&Ap+x`0!;X-3W%^dr>6?o(S8$d@eu@h*6ID-^>e>SeSwfZyF?Qz# z{!sOE#7sRQ%?2RVAS5Qa6d<;sJDkK2gu=k-ES-OszE<7tuoF<6g&p=i7c7VnTtc!5 zE)z14i))H3Ap$TmkKK5K+ia%ILj0N=K7t0dniu_aJKb%})uyWsYZgPNbm*MhW&^h5Qu$Q|^Q;d)ftc0lUYy_FDeu4ZYW-t=p2R*3ZNb5Ei>imn3tH$rn6ilB~ zSW5-!BB(e}+nvh`v%1-|Tiw5)aZ*AU(LNs`qxcR1MFf4;Z>j5_p2Hyq2c zD8jne5w{U6mzNl@Iaq5V&KwVuR;#VeMJzgBfLlcgq}nw?dwcmQ*)OlWXLc}= z9Zs>BUYB?&^s@XT@EY`qEV{x)qtSn!d{=@u#C*z!b8JW)sWeULE1qFY2JRAxyxvOr zAf-m$PoPY;x4LJ6y7Vsv5TU#Q?Ne5ZVu3z-7cjbSCeLu&c2s>hE}f!s%BgBM5D#!Ny^Gc)Oc(V&J{`Tu<+zEm9U{-O8*a1D5M z5-q_0A%@{ezyUAaXYYlC1h9-JPaZGg|K*(}22l`jZ=BVX!C7|pCRIYTFrQtno6DT; zKB@G#)snSQa{Nj;n0Y7i9+0l6B*6%^AnYJ%L{HiZU@ygGEAhQ5tY&|jUx8R6dF>VF zn!^HKMOJY&f7V)`;HCjxv&FmU*#NS{ zY9x=2J}yL@Osn#j46uauj_(hjRM#c-(|{kbPXI>ag#%yMQV?t2v0%7mQQPPRj4gQDDnZiLJ1Pla(5KlZw~5`a*!w78}fhn3K~4PDzc={los_i{9SJMZdRyaJl!QcX+dR*iC1y1Q*G#E?%Bw zH&^}ug7KdoDO`UJ`RX3L3V0kf6bW*kkvk-l5EC8k4MnQWf^6)E&Z@?#676R`jehnY zIB1>HF0&r!EzsHrOG+EFpQThOX>54QPGK+Kh8UI3c>pnD(1x1%7sPsHu=&ihk;|Kz-T;|<5WliZDWEx*h|7gXY^csD>owZO1PydJ}$u}QA_&GGy2j3+U z)z>ykR$hNOF(8Z`oQFKQO`};Q_yagzQ!n(!5E+trau8!4q~dAJRB5w;Clj*Lh>dc2 z=ne1uB#M(x3jnB99Z22BvZ-J{@B%$lsZ%58u28RsnmaRbzuA23~pzYE|4Fu{+9WJTac1* zdIdqrH1A`{S*rziDu%b3R_pUlal@LV)8N~Gz(@BmebL$a+7+prCoP-E59Ot-m^{uG z+^FiZR?KVR{sxoVmApQVq9L0F(0UV+$6>0jX4+t5h6d|aNSLLq$3} zt~!5jH3F(!Jql6#pGRLnkM6eN?ZIslg+>$O1?uF# zzkb#ISw4jy_z?Q(W8?EbXX35BlzZye#}8FfME~ERyhuDQUnG)v(1i%NAoO_k?r^0-BRjCdbZamrfpI#&Hi*2#VJU#)E_Wd=UT*js-X zPvXBZ@5n3uIs99@0zxBfptrcSw+&eJST18zZdIPzmz z)C1(=UsCd~URG&XJ$GoL8!4O$trCB9Uc-gD7Pya%DI}7O z+g)w^S&l{u*Ay7DIoJ%=@<`|md0FyP2|t~b04XFCM2^6sTfWpn7{bOJ(w*L^MwsX+ z)e}2;`}+0qo6{@I@sKr*?9(Hedh_W~tp#a8=q9O{mP1j5=bANneRgqi{POJT1N^HO zrMys%NTqhw(m($pcIL>0FkL$TD($&~Py-jYdVrcwpTgCVFFPSXO5a?Z)jKctrVu(v zj#R?c&T7P(-Fj-}-G+EtN$G!{i`1$NOo$?izbhvQ-ex^_2WKO5+-@jZu%2{qPS0MQ zU7lUNJ9~fe_RZDBhm#XXzs#kJ!>dD(w*WIMU*W>9nYm2D476{>%Jd&lG0AFfOzu{*+~<}0P6p~SfC zeI#yQe2}Gl2b~oRodvssG2`eyzmerWpc*j`?nbhhC$(_VhotI9-jNi#awpr^$l%r`31PU8QQ@9frD6LwTnE$KoY3%194%0%ULF5*c6x=^CTDw0HKOaS54$lpa-3KVMQXL8rzek)x-MTv(k5j_ zMiMMn!-B3h$J~FsWy@N|+@oc!sUeIu<#AwT$GLdX3!*XG!zP+Z2I&tYv`esDcmi-w z02ZqA7NDoRzq*^b-As&HVC_smynM3_BhK9SWi37MQ;9xw0Eqacw8*Ep#yeHUUCo4+ zRNEWy4y`+L6Pd5LhYvHv*9iYlkA8|WhKOMUNVyFHK9qk>JZ!8Oh2MO7Lc!BG#X_ll>Mc@J} zuJOIw(O~0vcEpS3UM^eVMRO~b71OIm=aCDlFDZX{v{U5=`J}7;u#uNqG?gxVN|rAZ zUk(`5m~3{$Qf29C9d4ye%xzw%I^4=UG52YCkPf#SmnuA!4p(u{R3-cE)G2N&Ld?xm z)|;LSX@@(gyd9BbD=*;((!s<%ro{c99$@I6U6>zy65o(kAZ%-)VhOK|2lz6mk3IXgXy*z&Dh)$~#0TZF6ly;!* z^!()b^6cv3`?o({9lv^|{Acw-;Ms;%0v6RT^iyn;0JVqEYb13 zmrO2rP0f)V4Hk-mTJ&V4K}l);O9Uw0>8hB9a+_PGVJ1x@R|{bwstY1&IYFF?12TU~ z!batkH5dQSm|i>B^|32*|Hh97jt1Z>~Cyl-~dQsE#A$>^D?# zM#{)vUvYLUUv$Oy7Q(rPs55aPc6JmWTt8bO>5VsC?aa2M=)sk^lihQk%GLnR2zy8cZG|xO zG|IJw-`0^v_gay1|7%H;JvoqFW!D5}q}gT`Es>_%guoklBL`>X8P$%_ZC^{|+rviTm_{PLbpdG>ITKQt71ROU#_fh2Q$a2z};pN zmU*UilX&y?5+`z2GGmWZ7H|(xOG7A*=K&&~0zpixZm@;LHa?&hlq1_U9Rx;p)b-a48FQ`&|iuT)OgT(cp$> zNL2z=dQGg6-z~M=D$Rcdnh85vT=MrfQlzQ`M{HzM+$*sn$~Y%3m4sEX0+M1p?}{==fHkqU?Z#QHCb`0) zE)COWyyhJCW( zxgeqtmcKVl336>ky|AGjwJBD06N+k%&JFd4qIw`M z(XM7*$8^9XDly6$4@T2sV-VCucMSD{U`EYC2hfhYIt;w zP_gJqWb4hZ6DofzoG)t?8Q@ojeM8fk??foNy~X<&Fc541WOVQJ~pKlSj!Ql2?Ms27bS69Vl&s|_PSeW6@n{&)Rr&|2ZTw~A4 zg1p5}P`M=x5?&;`0QUMXe}-~2r4)Zd$I@bAgLp>a$zy<{aj| zeH%dznXF7|ogx0N=5E>{u%_Xeo!w3ppNXL>I<$DVUL!r(>r*RS_N{IQkZr1`BL7%3 z7kp^-WYmA#?q*|iYrv#uJsbJQn%Uq(t7oI$b~hWFL?D${uIHowTr(r}*y=gu54f9^ z%}wQkD@V|!H&$LCH9_&h+S$P~tEVR4bvG}g=Bv$A`A#7%sVRLg^HSE$Nw-*@0-F8xM zO^%Gh-bT%LZO3v4J1x_Ns2!%vlXB4Q}N*&?aEcO+l5DL z=Ry_3&Un5-5lrq|WvsX!smRq}#BUKSu1BhJT|7SuEzZ|CarGzKmZA;t z>rBTJ2s9pBSM>fqAnke%x=>jTxKSG_%dvl`qS0C4p+~B9#m#I9nGwajS}(aGr?tb* zyupNpQMkvavvjU9_p!uJRszOcwNsclO4I6*OKHVS22m_#GK<0?2*EOOm0V*-F^C?i zd{&a?CR*uW4#nxSgjxID6^`7)iDxup@+5T5O$6`tD06#h4g;U>fskG>9Bv1 ztC|k!x90Wu9hP+17{Hni?Qizh!JAmpVq@)US`1F()Em2_$==bcDbo&LRe|WrpGPV& zb#-QKJPW0K|E1h#VP?8=FOs@Kxf;s~#=b^5+ab}}RdBZ0Ni@UGMoAiH1GwP1qQlBq zZLwovAB=dIK&AWuXezP~;7tAoZIyo%enHCP&1r$+N$c*yN-uPjy6C-1k%LGQL>av0f^wmaWLBE1`yRP8a-9;g9M(pXF2p1K>XSEJNOS0$~;pHQ$T!U5Q&<@h6i<&7mtqDkyTBaj~6O~7~7ShALk;U>Yray1%s16b85F31LHvX?w) z4#k6gIie5`vvMk{Q=gur+Csa%*{rzGax5$7sYyT}9~2Tor35<@5!QbVm}*4Cy6dGK zZ;*R3IpvLwVpx`AJ-`UnGD6;?OWtjFGQz52FP9O#k|6HV-%hILbIu11+L2a8dPW(6 zd{D>;m1yrwMp)J5t&tJyd_H!(K`yOx$r}yU*Y(H+b_N-tom&gBCwG#9UW-?j6kfIT z!f`~5USQ{vBO0_U$why2E2V|vheBTDMJ(W}G|PpgkOihcF1O2@uxn67VC59TaP*Eg4I(G(Ac zFjiz4IMY6TQqk3t_DM^1aXa`&xz=`<{U>Hvsy=CQ0+RY2N&SD(nwnh8RsIULZQopt zwIx~fRnh_aq=Kr_`PQKiC^ihII5_AY;8m zb>+Y+wNNHDGqFr4@JCG2KR|jwFnMVTsfBex8%vrjCB0rzU-DLyGAQC?5)jAP6-X4E*i z=@RKUxZO9GnKi>X^!!>^Biaa2YS}n>@CW!iHYyz_6K3n<*r#Pw~!stnJS0wMKuTseQ1Rk?NFs!5|`z=r-qO6s--+R!Hz z(-{=dmVq1k)-4wGkAg}7jR(*OwVKb8ChNY63pAk)1ET7cnJrZh)dU(;0<&!%sXTgT zR6PVXqC}O_GeFlmm19ep?UiDIGSC}9R;~W9rODp^VxUav0U%DR1VPTx%sCK9 z->QF3&k-0%pInXS%IQw3wR`AbpY?a2h_8zMn+!aRue})zwWn?+n)#0U`@aEoGcTQp z?@r=DSICL5`?GiFbra5qSyvs}CnKOAacDR^2CGx7s|IiCTMqbwXq z$L1b{%3vm9{>h`Gj|&MdgmsvCgIjOR8IpgaP1FvO)6wMA;ZE;A-|P2@8?#xk*-a$S)0*}lGCseti?c7%f=D`wjuU{Kp`O+TN1PTNtDQ1zm-*( zfLjDHbN4D$|!wHdTFL~V4rw;PIT9@ez* zK6(54_3@k2s~_LKFLfjrj|}U3aodo&VWU->p{Nph&8q0$Lm%K@y)2cb`VX;6M_QPa zM96A!@o7y^mwd*IQhdc6^$(D{D6dT7Bbo655|_&lwzDWJcAZVdoW((zia39-LqC}X z-W;*|rp$u|LD(M~yY9&Txgm~|bUu9wosn$of&g;gLE~(m3Q~^PU(bF*2KxB=?fbJU z_1DGcPN$wqOVi!fB>_~PeetHVfFFrp#otTZF4){3aG?}$*kIztfzO>u2of@}qoIsC zW0izZ=w?zjtg+F=({8Ob5{Q4Wqg63#l6tvW(xp4(rCFP4L|z;l*RrgI&Z*J$&};Wg z=C${zi%9h^*ZDGRHmx~xo}3dx=}T=hE>+sn`%*jVKW&vjvd#X}R%s*C`bLq(F?Dn# ztdd1m_Jyols6(-7L|Pu=*j;Ezx!A{9wb8tKb$)Sqc6#;phqL!ToS%RF*sgEhty@*E z>&8o-8TB6ENbr!7QXCCMm8qoU#V31xVphE^wD8087U?uurE)whWzo(PXPuZq$yT%^ z!A17n>UxXQXix=1vddB za^8XCgd;NM@3wP|tda{DmK#&7*lAGkWra;D|8W6lWyNd9no=@z+tFg&EY> zBI}{fie8iT0HQ}acaEOfW;}!=AMQd>6xuzJf1UDx3(4s?@nL_;y>u>4MjCLN6o?Xi z>ykvDZ;%JEk~$UZEhQ+ZqBcj=7)9$!YTS%z6swdK7=7s^10HhNmo$!o&T+uw)X_>9 zW$c5f`Yub;C^25 zV&%B3#oooybe4b0##C9tpe{{p+jKvsY)AXGIA9IOc2~Wh}|mFZW)U!mbbHq~y^% zVt?xWkA(eaO(@QCl6JD*(V%vs9GxA`j-s8cM(eZ1PIZ6q*<)psgAIL82yWP>86McR z=XFiu4S5!Jl3mT>&oc;2D`{~VspE24^tsEa2j)u(?sG)6oy6BftNYTA6OPWMiu4n! zJ`n0EfgFc0N*&Q@rzIqvj-;SDMZ!YpXwP&qiSAEIta^%^sv@@wEU+FAf=a!m?odBy zB{C2H)%brj;&zNL@8G}EkOYgZqXg*j<@wt;YwNg7>O_^- z{nI07MB3}43X$J)Z^+|I{w3W(^dDDb*=dj^vQFe%NY_I6&8RZlEDy`6=N6c`CeCI# zGdnfqXwV1fC-Jj@{E}aA6!=RlBjg&%Rj$2|5XXPv@JG*2YrHC!)IUHk6)rJJWygn1 zl0-bQvsrdIUnRm2;DP|!!Rugi#X|P9zBzt<=7>;A^x@%zzWe^|o3)e@nSc_vcsQk($1fex zNh(2db1q0wuSJ4PC971 zl8tO$P12in?fEPyvXQ|Lj^5bOWOh{9)3mlpnFUD}V%bDe>Ww>>-q;m2%~|ZEdYXT_ z>RY?fNLe>6hC&RAY-d@T*Qv@<+<{O*DF<&l`uT=M_82D8I---5lv7ijYBw51x>kZ# zi#Ju~LphdQB>76-1x7umoH@1m#ZT$bC!2y_TPzMW*~T4{lJggHMuot_*uUeUhPapB z$lox;nzOH}8OJaAlIl9jVvii%!O4F)jV(M-anTlG=`^uX6sy{px&V|Vf#h897W=d6 z#!$6tAY(X>H%TEej39wIN-=U4smK}sG82>FLnghwZfqfXIgcy(K(5G9dRsfpoc}PG~n#O<2=$426 zKZUKGs^4~CIoqsszt8``J9PdRx>ee4ZmQ<`9Wo>q{8SxNIhEozo&T;JE3TjuH!A|N zvYgCCK(*_G)dyb8-^G07f8lump~Q^lUDhk;XlEbRK%umwCazoDQ8ydjf;O5N61 z%|UkFuA2n1i|bj~z|EHWL9d#H>C^B|C*pwq9#cYr5#Yi1e%$nnmfUsF&qD)E~7Qq@~un4YCtn zn-!_qt(`rPc_mq{oSA+Q z=3HdtdbBkzGKJW5E@}@Ny4u{# zJ*CtaCsU|8`QUCj0nwG@dP4Q7IlAjT*$7O` zZYYXSeyBiRSK0cs1n2$yK?#FJO3Lp%Q;^(Bbz_}Hb`-k^JCZ#nw5a2WRzli){z`lY zI~PyHBX7Xj&dGnP^IewUjzh0_KlCx@f=OU)sCk)!V3-A*>68&S6L1oaqz+~sjm(ch zy%?ucu(|0(9f@u^DYaGEcULQJi6B*}5maQATr8E_2EGfOU%GYGBt3)&pF4erY5(bxE$B zmw7$W%E@8oWpRhErQPltzZq`0-7+~a&{mGM#z2E<<_22tK?Yh0mFbUA($S-L!r71m z=p+4CE$MKxIu_}>MK<+u9DDQnELb`Pn|7F`kM!Vl+l3_R(xG&;1`p1DXd!*Qnwn>ka`aIOqgKiU1H#UVV zmWLWZaL1?Q;I@-Q)Y2w7qMsbrUdTi>94Klg>T_tXOSWz;!Wh59OjJ@G1tDNyVRl+x zq|5u*bSkPIA07+pa=-)edk0>xgO7id_Z*ikOf+GTomirZnkQ#Nj!nug z{H)BAbF^;{?W$^*rdI~+waL@7I4o{jvf7Qgsq55YD4V1uxi=p_V*;5rSoIMr^LH`} z{B-Bjqfg=|`H%HJOEQ;l)B(k=lZ9=os#5wxxl>M&Ewa+m-;r0zj+bD&i1OmD$FiZ` z1IT~%8jg6FRAAv~D2gb4=(N_jw+;$q-9FX1g}1=&YxwuI7kcBb&984{sg(6bYkd4R7dTtMv6fiGqOR{$sMCBKSB6C^QSxc@soki!&-l+5}0Y z#>E!;Q3p;#=bboDb;+Q;9vKkd!u3_~j6Q#do%N0xI|XCm?kcDWqVX8aqgUd;Yu(UP zF4$D5(nlgWqpHBogZv~U;{1vW+MRb3a8Q)Bvwu!*reurdu|QKAdtoB2Rp1ic{;8fo zlz2`ZUA3*k2T{yBFEjswr>Wqc8mG0@c_KNs))OXpIXU5wpRumHBr$OCaG($?w1j_W z$oW(^?54dP=^B#c;#$*++hR15dkYdsXELQuy0`prZ_1}pJeQr*@^04UPTWH;^;Y|c z?5HGNbL#t4TZ~4Ls1+Y<*%&OlU-9)CAHg%IrP~Zzc739#43tZi!vgsqb?Gb4E+kRP zM|LWfEzYmz{%3WvNuDc57Oibotz3U4RqFB`@UK_=UfZ*T-h`6ubgB~dL8whgV@S}$ ziNDpVfIb~Ug4}?oLQq*t%GiPwwkoVJs`OB-rPV?NZ`@wjf_Yp-8SF;1h%%f*=9?Gz z|HRN&Mf6}V?IQf(mAN?_7VJ|emZ7@$(6#r;m1rizf++D^UY(uy+#9|PgZY1oL*8ck z0mFf-^YmIBIXW^3%Nx-a7ss6ny#;lSE|erM(;8i{jfT8ZYl$0W2q@k80f1-$vV7U@ zQ2o%$yf53Ks{?=q4~cw;vVc}6g5=9`{Z{W%cAqLO(+5B z%y*?sWqu}iD4S+?ByC~@3(9}3OyaUylnQZYarF^)q10g5*-}%rNNt}o3l`j@pQYtc zn+X0o;ceC4*a~w4c712@fbF&yxVdigtpq9=YQxdylMpZ*4Mnw^yWKLX{KNh&ncJIx z*?<50NBP%{PmR<7+R;!{y}G_>tKGO%ZK)*jUE~j0!qYi_!(z#7 zqV!c0r~_WNRE+Dnw|mG~A*(fp)iRLKJRA*0Rfdia2MG_ObU2oe!nk}=)*J^5x*kxI zO>;I`(6D(4wcU6dIgIRvqRK?q>_(Mxirq>$siK&Q=Ex~McW2pR9n*3@z|(f z%5EsCh;)5CsA5nZ4@i^&nOt%fyzm1KFT0b?Pi)ZPOtRTXovZvFs&mB=6F%L@*=;uz zRaQD?!l#z?;95qTwiy}JTYkeCb3V0^jtj!tM3*bJwDDh8gtmWa6}L&~=HO~}<874Y zZZ{MeBE*FQ@OUXs^56gdSN+!!e{Ph6X*JX{s+L@@O02>Q&n&CX460;Z0N$AA z;(ZZYzEuU$+qZGElo_y~%&kD~?OSew+H4sa8g)^I6x(LG7IqSajDuQt zP^}hZ!)vzHSX6Q8#2Kn3tv*=TPv>|r5IY*h|D7WFJMmUNK`aqs7ITkOV(Q5HBIBp6 zL2RQJvGi;p&)ye}ce8Mc14Ds2yYu_!W-a$ zt=2^feP^&+*H|YOykdoEraUedwVD>C$~|&n={k=iRitfP9cnYyS8}uT$W@|cOL_H$ zDOP`oCGvFRr(IrP)iarsV=p*SeBX`)pJI{F^>NLiu)|32Sru^t3?+_VvAQvU>5w8@5F}k#!~PTbZz-p6CEZ17m@BGnB(Ra{MVo(V zCG86j*2LK?r?7c3yyYR)VC zJ?vBk6t@oMkBWt}d8CGlF+v#W_l8uuX)_=?Qt5-50TruI-x2759FDOCOhq!j_mas4 zuK}KX1|)2uRnQW~t|MsD2Z5y4u7H2lCj35;QEN`)Wh61$zsvk!SO=*29GVM|0W~ck zQcZF)^~Rk`Z|rDONU=jVl9Ch#T#MmG9*x-Hwgjc=>8P4&22;kdS_7R)ri#|Kmc7ip z*b{&AiIzet;Lz572&g>p$gnP+rqlz!B97ZhsVUPKKL1jZRSs>Sqgt{@Vb`l zfT>0G9FlC&bqI6h^`eN)3izkmLRWs$%`uh8Q>9+}yIpoZ6o2~ZT<-j8$Ag&bAz5l# zBbrM1$v57VV-JfuiDbcG^oBYWGTu$1P@E6=*A*cT11&uh=61mN|KHx*Hn)u=>7w87 zufTfaM$p|fCCcx8KHR1xs;z%%OL9o^^z<1`C?FD&I86~;fU>QbW}HqxT|&nFVp@eRo=rlhkZAb74Lt~$~#eFt$9f= zO-#~DR-s&82Ax0j2XFi(h>XVe?(XB2cV)NdOs)pGM-7{?wm&9SHIOzLXsH?LXH|JW zt4{mHqu#HOP%2TQRlkeUcjlIM{Sdi|9KJLFXh`xFg;lYk?J#- zwrh574=@Az&0BxwZ|ORRiLaZdi^;53!QD~-bVckDIAk^Gt`Y!71bsNm9a<;~@rOz+ z0br`((PbW@2ibZQftU4;!9e&3(R4H;e8h$V1Cm-GlGurmf)D!Q_}YGX{S|=1WUmd=;*4O^tsn_WMhq z9)jZ}Hd(5XceYj0D6tHWOav(qp5F?SFb!n0CHX@AHSqrkA{i@|)*`&t3GwnN@G4k+ z4T6QY`WhxPC^sP3f|6CI!+>BTg6?Hf9WaZ}#4hDa(N&Hksq`Gchq#<+p@0E|lna2c zka%K7vAKV%1uzK6wc1$+35?m0?++M?%=edB-R$1~M-tB#12G{&vf-1jTyAg%-yjX7 zB^ko$4;=3RknSV10Wt{(iQ4zePTl)Z_t~U zjkNSGxqG;a?!dfMGDl!$@6`=9Tlr<2KKXO5QZ*8lpwk^yk8C!W>KAM{5d~_+sa}d~ zIMshI*l;4XpjMno^?(Jb`4t;hJTu9PSfz4U;Hr=-PgJUe zXD)0Cr0mNsJ(0kl%KOsnZaEL`d0IKHkr8WpH1VqEN@=F@+ z-o-O{L@u87J*V%6;z44!1w87oNio0M!!p7iK=JP^bjv!ifXNrxXOTeNcjL2*qD?L8H=KB z>rTwYi1EUh) z#50=p^jSvRAR>?~iA*!Lo;(VMWRHIbsUR>RvL4OW_P}~L%jfT)NYF}Al9ezmgw-Xg z1&zwyfZ?;cNUd#@)%~%I=6F!V2DINmEhEaOxgcJ};{NHcJioxktb!wN)1*uJg8aRo zenxtT>p!Zb@AV%|dhqv(+CDmEGkrqh_H01N)Wh%Ioxhsgdj8@ep`QN3m;rz9X7(jm zlqUmW2&wwl@wf<%NY%j>VuezRxQ;7`k0w8~aM@O5@sa01)#2)PnJaT%^FeC`VSpu@ z%cLmmSKrn&h5de8wjSBa+tMBFRV-9xMkX0MRp}?*xGJzq52FdXa_=8i(>q;sa7?Pc zXL9_=%AOJ$0>>unWp5+dU=@EzzHDMYCJ+``8RtVqiSP~LRTTJly^6~!84gubZ{DI8 z4@c5`^$arag+9GZxDf4Y`&#>rgNe~UzX_CwH;XU|_WU?7U9B<+Y1abOu?h^EDRHea zRZ*ACCHeY4{|B0usb|bY7T9No*aXIznKHgMXNFn~rkSO+Yi-UAF+6`2b6X?V#WdXN ziE6K^peA2ywIz$VjLIVHkmSU(?FiF6?JO^Zc~(77kpUpqlF1pdv$?bv7eY)Ovom6+ zRG~Q|U_$~77iyYn_9VbS)v+p+3`h_LY67^9MYjrR&haiD*93nq!RGpe*Ev3BYd$26+~OPOq{@(<;cEz6~5l z$|vQm9EAS}?ysFZ#xiEz@m#OidKiHLd%KqJUR!6r48#i*zPf)gJzhhHd)KR=?y^f} zz-^YffDq3SM%s859z~J=;3l3Ok{J^yX(2UO`iE3zpE|?qutL(fA&j`zq7hF8G;N?g zgH6^m&0U#99%$BJ19Ter)04&gfgczpCC>rOgrr7Q1WXX7`VAj)pvG?UFAP${HV+2U zv6EB~LqyS{)rfySRrcvYFd^-89GKk1d>AA^0oU)(LDfs73~Hu{Q?zXb&DXmZLuwu- zDf#&aFS!tT($L5qmd{aJ34&llkmRFpI)XIeNJ>+}?Tj zazlw^ zUg|V|w#ds{?_8jhG1F8^wxyK3eev=&qm)?9DQ=kLmEcZ5XhW@_1*~>SISn7YU4QQX z5zXS;g}<-}%bT57uZEj`ZxlXUwInNbYGHpZvhvy+&Hs775I_=HdG}hIpqE2NS;4qu zOJybF#H6yqBP#Z+fikWjrce$`n-pZc?%pZTHYw&dZV3yoFXova@?FlMPAXYgI&L$% z%C^qSA#_IAUXh8x$-P$Omkc^3spoMfn&JIqiEr?&A$qe))=q{djlRvIWm`HP0x*AU zEo$^_NtT0a+8nK0koFRdTDM@Ye;jPx*oZaQy8WcbgJ<%ARo299;LT_8N*3$ID*vFW zP7ef1C+)6iqd*>!syg#JzOyO)YZ-v^b_*brtA}Ms0lo=*kS)B*!qhw&!ed?+rJnBxyMN0F=(8E_Kr*p*vKn} zMyj8^<7Ah>K-5a$F-@VFAk<3YVO#==>cw)Hpy7dJp1L_qbTCZ`Yw05anK^%x@NRG| zMhv2FcQQwC@`vIBT`aO(b7} z7XQwFTs-5t%rweL$A%)e%Fgi{nU!<5BgcSHBL!9<6vxR7EGPPfDwVtVS9h#nz4%RC#!f(^tWN3Ot!U*!mFse;U4j(!AcxDcPB0YHobKi zlg%dQIQ*QsGBXWLR=e7MZtO|#=j=T>WetCxH4%NU_#s2({XD0?%M%r_DWSQ2MR11I z`*}{KZ_Xj5+J0WpxJ>h~r!!P0Tohqy?(OFkO}shBlp_0iLH~cTwMr)EPslGt$|of% zwHW}IKxe;v4hSi+A_qhXZGwc;10g3~q)?QICQvwC5Gb`mK{1CQ0mJKsK#3HR6ht`~ z*^a0#!G)X&IAKDqj_Nxk)?_rFSG0Er(XjPN12zNia<0}O-_MBIqhd&$z@9-GB~D;N zF||1dMg$Tkga`LUSPkiaziH&A)+{QHg=6HA-4P?UnID2Au2RyaM!pJT1r-2 zNH$u*`mT|!X(d^)A-;Cj_N{?YStB8HNJ`G|3STNQC+{3r=jZ@`57xCB=vZ@fq%Yrl zUXi5(Aj4bf6m0l^D?p&1Tx)01eVp)2__-#siA4 zk4qAb2{lcnvG;+eUa<<@8WN{Kf0oJizoEBKXBv>KnSbzpUfo9F*VwZ@rOT^|vT0*iu=W?Ikf+hdPSz3ihQmkaQ zTJO2%Tw5l8>Mf$ai^1=8oJDWfdBeCj2ptJ+sPcon6;!FvKk4pmT-WEfXuI|`8FDVfOK!PhTNimvU>jrkCg8bm9CYQS_iGH#@R6c zniWLvB-g5Rmytc(MpUw=m9NLR8o%5<_^+DfkIsqWph&U_mu4!?Ssc zZEvjF+zEGs*SVL*-uju#Z9n5X_H$aezt%W^{oJJaW<@m@T=t1naLF|mMd{a_SOw*V zvTiBo#&B39-H;8VZKNCX@MbpI`Y8W<(7?7sSTtW-+*dc0RWFjUq-7^P)@ zZw5!=Td{9z2lnvzucMEL`OXmq^K1Qw|_F9$2x4gAG49_;CFXw zu+(?%c2SRyMu#7{G1K$98zBEMI{P$#5(4gmjTt|rYfufq$D^Zh^-6>G8fhw21M{a3 zC&zTqWKXXlXld#+Es|2lMk}AIB%Ug*Ozmld(4ROl3iCXh_;bU!Ip8~GB;u3Oq29`5 zn;~^5lrL%)4h~O9OfSfUQOc-=fFV7k!DuoOd$J!$j^k=n(yY8`g~cR~>XYz){exLfYe9JE## zq(;w~kftD!l~~DY3YJLRc#Sb)IwB-u6ACf|>okb(=kAV{V%gpi!PVxADu9zYpq1